2013-06-19 268 views
0

我有一個包含日期和時間列的表。我需要獲取最小日期和時間(col c)以及最大日期和時間(col D)以獲得唯一的ID。獲取列和其他列值的最小值和最大值

E.g

 A B    C  D 
    1 12/10/2012  8.00  11.00 
    1 2/10/2013  10.00 12.00   
    2 1/10/2013  1.00  2.00 
    2 9/10/2012  6.00  7.00 

結果

 1 12/10/2012 8.00 2/10/2013 12.00 
    2 9/10/2012 6.00 1/10/2013 2.00 

回答

2
WITH CTE AS 
(
SELECT A, MIN(B) as MinB, MAX(B) as MaxB 
FROM TableName 
GROUP BY A 
) 
SELECT C.A, C.MinB, tMin.C as MinC, C.MaxB, tMax.D as MaxD 
FROM CTE C 
LEFT JOIN TableName tMin on tMin.A = C.A AND tMin.B = c.MinB 
LEFT JOIN TableName tMax on tMax.A = C.A AND tMax.B = c.MaxB 
+0

感謝。這工作完美。是否有可能得到沒有CTE的值。原因是我需要與其他具有外連接的表一起加入此查詢。 –

+0

我不明白爲什麼CTE會阻止你進一步加入,但是,你可以隨時用FROM子部分中的CTE替換上面的整個子查詢。 –

+0

我會親自將查詢換成另一個CTE2並進一步加入。 –

相關問題