2013-06-19 218 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并进一步加入。 –

相关问题