上届小师妹问的问题,急,求救
有如下表结果
姓名 日期 数据
A 2012-10 90
B 2012-10 85
A 2012-11 120
C 2012-11 100
C 2012-10 60
要得到以下结果
如果每个人都有11月和10月的数据,就用11月减去上月的数据;如果某个人只有一个月数据,就不计算,必须两个月都有才计算。
A 30
C 40
请问用什么语句?
[最优解释]
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([姓名] varchar(1),[日期] varchar(7),[数据] int)
insert [TB]
select 'A','2012-10',90 union all
select 'B','2012-10',85 union all
select 'A','2012-11',120 union all
select 'C','2012-11',100 union all
select 'C','2012-10',60
SELECT
A.[姓名]
,A.[数据]-B.[数据]
from [TB] A
INNER JOIN TB B ON A.[姓名]=B.[姓名] and A.[日期]>B.[日期]
WHERE a.[日期]='2012-11' AND B.[日期]='2012-10'
/*
姓名
---- -----------
A 30
C 40
(2 行受影响)
*/
DROP TABLE TB