34,587
社区成员
发帖
与我相关
我的任务
分享
--> --> (Roy)生成測試數據
if not object_id('Tempdb..#T') is null
drop table #T
Go
Create table #T([日期] Datetime,[水度数] int,[电度数] int)
Insert #T
select '2011-1-30',30,50 union all
select '2011-2-28',45,60 union all
select '2011-3-30',50,70
Go
Select
日期=a.日期,
上月水总度数=b.[水度数],
上月电总度数=b.[电度数],
本月水总度数=a.[水度数],
本月电总度数=A.[电度数],
本月用水度数=a.[水度数]-ISNULL(b.[水度数],0),
本月用电度数=a.[电度数]-isnull(b.[电度数],0)
from #T as a
left join #T as b on MONTH(a.[日期])=MONTH(b.[日期])+1
where a.[日期]>='20110201'
-->
/*
日期 上月水总度数 上月电总度数 本月水总度数 本月电总度数 本月用水度数 本月用电度数
2011-02-28 00:00:00.000 30 50 45 60 15 10
2011-03-30 00:00:00.000 45 60 50 70 5 10
*/
create table tb(日期 datetime,水度数 int,电度数 int)
insert into tb select '2011-1-30',30,50
insert into tb select '2011-2-28',45,60
insert into tb select '2011-3-30',50,70
go
select b.日期,a.水度数 as 上月水总度数,a.电度数 as 上月电总度数,
b.水度数 as 本月水总度数,b.电度数 as 本月电总度数,
b.水度数-a.水度数 as 本月用水度数,b.电度数-a.电度数 as 本月用电度数
from tb a inner join tb b on datediff(mm,a.日期,b.日期)=1
/*
日期 上月水总度数 上月电总度数 本月水总度数 本月电总度数 本月用水度数 本月用电度数
----------------------- ----------- ----------- ----------- ----------- ----------- -----------
2011-02-28 00:00:00.000 30 50 45 60 15 10
2011-03-30 00:00:00.000 45 60 50 70 5 10
(2 行受影响)
*/
go
drop table tb
select
b.日期,
a.水度数 as 上月水总度数,
a.电度数 as 上月电总度数,
b.水度数 as 上月水总度数,
b.电度数 as 上月电总度数,
b.水度数-a.水度数 as 本月用水度数,
b.电度数-a.电度数 as 本用用电度数
from
tb a,tb b
where
datediff(mm,a.日期,b.日期)=1