读书人

亟需一个相减的SQL

发布时间: 2013-01-06 15:44:48 作者: rapoo

需要一个相减的SQL
user 列2 列3 列4
AA x 1 12:01
BB y 1 12:02
AA z 1 12:06
BB y -1 12:08
AA x -1 12:09
AA z -1 12:10

首先是列3中1 和-1 是成对出现的 ,user 和列2完全一样的也有两列,对应1 和-1,需要做的是把相同的1 和-1 相减

结果就是
user 列2 列4
AA X 8 (就是12:09-12:01)
BB Y 6 (就是12:08-12:02)
AA Z 4 (就是12:10-12:06)
[解决办法]

SELECT  [user] ,
列2 ,
SUM(列4) 列4
FROM ( SELECT [user] ,
列2 ,
列3
FROM TB
WHERE 列3 = 1
UNION ALL
SELECT [user] ,
列2 ,
-1 * 列3
FROM TB
WHERE 列3 = -1
) a
GROUP BY [user] ,
列2

[解决办法]


select
a.[user],
a.[列2],
datediff(mi,'2000-01-01 '+a.[列4],'2000-01-01 '+b.[列4])
from table a inner join table b
on a.[user]=b.[user]
and a.[列2]=b.[列2]
and a.[列3]<>b.[列3]
where a.[列3]=1

读书人网 >SQL Server

热点推荐