通过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 ....
方式字段不是固定的,是从另外一个表取的
日期 金额 方式
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 ....
方式字段不是固定的,是从另外一个表取的
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.金额')
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
我的#a表是没有方式字段的,如果有了就简单了
To 海阔天空:
列名"付款方式"无效,不知道你那是否有调试通过
编号 日期 金额
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)
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)
日期 总金额 支票 现金
2008-02-28 300 100 200
2008-02-29 ....................
2008-02-30 ....................
先谢谢上面的回复
sum(case when 付款方式=方式1 then ‘金额') as 方式2
from A join B on A.id=B.id
group by day