110,534
社区成员
发帖
与我相关
我的任务
分享
--> Test Data: @T
declare @T table ([公里] int,[燃料] int,[收入] int,[日期] datetime,[线路] varchar(10))
insert into @T
select 50,25,70,'2009-1-1',632 union all
select 65,35,110,'2009-1-1',633 union all
select 20,20,20,'2009-1-2',632 union all
select 30,35,40,'2009-1-2',633 union all
select 45,45,30,'2009-1-3',632 union all
select 70,90,65,'2009-1-3',633 union all
select 50,50,50,'2009-2-3',632 union all
select 60,60,60,'2009-2-3',633 union all
select 90,43,50,'2009-2-1',632 union all
select 30,30,30,'2009-2-1',633 union all
select 30,30,30,'2009-2-2',632 union all
select 40,40,40,'2009-2-2',633
--select * from @T
--Code
select 日期=day(日期),线路,
[1月份公里]=sum(case when month(日期)=1 then 公里 else 0 end),
[2月份公里]=sum(case when month(日期)=2 then 公里 else 0 end),
[对比]=sum(case when month(日期)=1 then 公里 else 0 end)-
sum(case when month(日期)=2 then 公里 else 0 end)
from @T group by 线路,day(日期)
order by 线路
select 日期=day(日期),线路,
[1月份收入]=sum(case when month(日期)=1 then 收入 else 0 end),
[2月份收入]=sum(case when month(日期)=2 then 收入 else 0 end),
[对比]=sum(case when month(日期)=1 then 收入 else 0 end)-
sum(case when month(日期)=2 then 收入 else 0 end)
from @T group by 线路,day(日期)
order by 线路
select 日期=day(日期),线路,
[1月份燃料]=sum(case when month(日期)=1 then 燃料 else 0 end),
[2月份燃料]=sum(case when month(日期)=2 then 燃料 else 0 end),
[对比]=sum(case when month(日期)=1 then 燃料 else 0 end)-
sum(case when month(日期)=2 then 燃料 else 0 end)
from @T group by 线路,day(日期)
order by 线路
--Drop
--Result
/*
日期 线路 1月份公里 2月份公里 对比
----------- ---------- ----------- ----------- -----------
1 632 50 90 -40
2 632 20 30 -10
3 632 45 50 -5
1 633 65 30 35
2 633 30 40 -10
3 633 70 60 10
(所影响的行数为 6 行)
日期 线路 1月份收入 2月份收入 对比
----------- ---------- ----------- ----------- -----------
1 632 70 50 20
2 632 20 30 -10
3 632 30 50 -20
1 633 110 30 80
2 633 40 40 0
3 633 65 60 5
(所影响的行数为 6 行)
日期 线路 1月份燃料 2月份燃料 对比
----------- ---------- ----------- ----------- -----------
1 632 25 43 -18
2 632 20 30 -10
3 632 45 50 -5
1 633 35 30 5
2 633 35 40 -5
3 633 90 60 30
*/