现有一个表 3个字段A(id)  B( 标志位)  c (时间)6333       1          时间1
6333       2          时间2
6333       1          时间3
6333       2          时间4
......
其中1和2 是对应的,现在希望算出  各个id下  标志位为 2的时间与标志位为1 的时间差

解决方案 »

  1.   

    select max(tb1.时间)-min(tb2.时间)from tb tb1,tb tb2 where tb1.B=1 and tb2.B=2 and tb1.id=tb2.id
      

  2.   


    IF(OBJECT_ID('TA','U') IS NOT NULL) DROP TABLE TA
    CREATE TABLE TA(A INT,B INT,C DATETIME)
    INSERT INTO TA
    SELECT 6333,1,'2012-1-1' UNION ALL
    SELECT 6333,2,'2012-1-10' UNION ALL
    SELECT 6334,1,'2012-1-25' UNION ALL
    SELECT 6334,2,'2012-1-31' 
    SELECT T1.A, DATEDIFF(D, T1.C,T2.C) FROM TA AS T1
    JOIN TA AS T2 ON T1.A=T2.A  AND T2.B>T1.B ID          差值
    ----------- -----------
    6333        9
    6334        6(2 行受影响)