通过A,B两表联合取的结果如下:
日期                                                   金额             方式       
2008-04-14 00:00:00.000 38.0000         .0000 38.0000       客人挂帐 38.0000
2008-04-14 00:00:00.000 879.0000 .0000 879.0000 现金 879.0000
上面的结果是经过Group By 日期字段和方式字段得到的结果
想要的结果: 
....                                            FangShi1        FangShi2   ....
2008-04-14 00:00:00.000 879.0000 .0000 38.000 879.0000   ....
方式字段不是固定的,是从另外一个表取的

解决方案 »

  1.   

    没看明白..如果输出的列不在group by中出现,就要使用聚合函数.否则就不要用group by,用其它方式达到这样的要求
      

  2.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',sum(case b.付款方式 when '''+付款方式+''' then b.金额 else 0 end) as ['+付款方式+']'
    from 另外一个表
    group by 付款方式exec('select a.日期,a.金额'+@sql+' from 一个表 a,另外一个表 b where a.编号=b.编号 group by a.日期,a.金额')
      

  3.   


    create table #a(日期 datetime,金额 numeric(14,4), 方式 nvarchar(20))
    insert into #a values( '2008-04-14',38.0000,'客人挂帐')
    insert into #a values( '2008-04-14',879.0000,'现金')create table #b (方式 nvarchar(20))
    insert into #b values ('客人挂帐')
    insert into #b values ('现金')
    insert into #b values ('支票')declare @sql nvarchar(4000)
    select @sql = 'select 日期 '
    select @sql = @sql + ',sum(case when 方式='''+ 方式 +''' then 金额 end) as ''' +方式+''''
     from #bselect @sql = @sql + ' from #a group by 日期'
    exec (@sql)drop table #a
    drop table #b
      

  4.   

    To 流浪的云:
    我的#a表是没有方式字段的,如果有了就简单了
    To 海阔天空:
    列名"付款方式"无效,不知道你那是否有调试通过
      

  5.   

    T1
    编号           日期           金额 
    001     2008-02-28     23 T2编号       付款方式       金额 
    001         方式1           10 
    001         方式2           13 
    ------------------------------declare @s nvarchar(2000)set @s='a.日期,a.金额'
    select 
    @s=@s+','+quotename(付款方式)+'=sum(case when b.付款方式='+quotenmae(付款方式,'''')+' then b.金额 else 0 end)'
    from 
    T2
    group by 付款方式set @s=@s+' from T1 a join T2 b on a.编号=b.编号 group by a.日期,a.金额'print @s--显示语句exec (@s)
      

  6.   

    declare @s nvarchar(2000)set @s='select a.日期,a.金额'--添上select
    select 
        @s=@s+','+quotename(付款方式)+'=sum(case when b.付款方式='+quotenmae(付款方式,'''')+' then b.金额 else 0 end)'
    from 
        T2
    group by 付款方式set @s=@s+' from T1 a join T2 b on a.编号=b.编号 group by a.日期,a.金额'print @s--显示语句exec (@s)
      

  7.   

    但是Group By金额之后显示一的结果是每天有多条,我希望是每天只有一条,如
    日期             总金额       支票    现金
    2008-02-28     300         100    200
    2008-02-29     ....................
    2008-02-30     ....................
    先谢谢上面的回复
      

  8.   

    哈哈,用个Sum解决,谢谢上面所有的兄弟姐妹了,结贴
      

  9.   

    select day,sum('A.金额'), sum(case when 付款方式=方式1 then ‘金额')as ’方式1‘,
    sum(case when 付款方式=方式1 then ‘金额') as 方式2
    from A join B on A.id=B.id
    group by day