日期:2014-05-17  浏览次数:20747 次

需要一个相减的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