求一SQL语句!
表A
F_code F_Area
001 A区
002 B区
003 C区
004 D区
表B
F_bookdate F_Areacode F_Nums
2004-10-20 12:50:00 001 10
2004-10-20 12:50:00 002 20
2004-10-21 12:50:00 003 40
2004-10-21 12:50:00 004 60
统计后的结果为:
日期 A区 B区 C区 D区
2004-10-20 10 20 0 0
2004-10-21 0 0 40 60
请大家帮忙看看!
------解决方案-------------------- create table A(F_code char(3), F_Area nvarchar(20))
insert A select '001 ', 'A区 '
union all select '002 ', 'B区 '
union all select '003 ', 'C区 '
union all select '004 ', 'D区 '
create table B(F_bookdate datetime, F_Areacode char(3), F_Nums int)
insert B select '2004-10-20 12:50:00 ', '001 ', 10
union all select '2004-10-20 12:50:00 ', '002 ', 20
union all select '2004-10-21 12:50:00 ', '003 ', 40
union all select '2004-10-21 12:50:00 ', '004 ', 60
declare @sql varchar(8000)
set @sql= 'select F_bookdate, '
select @sql=@sql+quotename(F_Area)+ '=sum(case when F_Areacode= '+quotename(F_code, ' ' ' ')+ ' then F_Nums else 0 end), '
from A
select @sql=left(@sql, len(@sql)-1), @sql=@sql+ ' from B group by F_bookdate '
exec(@sql)
--result
F_bookdate A区 B区 C区 D区
------------------------------------------------------ ----------- ----------- ----------- -----------
2004-10-20 12:50:00