最大值和最小值在同一个表中

时间:2012-08-14 05:45:05

标签: sql-server-2008

假设我有下表:

id      flag      date
 1         1      2012-01-01
 2         1      2012-02-01
 3         1      2012-03-01
 4         0      2012-04-01
 5         0      2012-05-01
 6         0      2012-06-01

无论如何,我可以使用相同的查询获得标记为 1 的行的最大日期和标记为 0 的行的最小日期?

编辑: 我希望结果看起来像这样:

max           min
2012-03-01    2012-04-01

谢谢。

3 个答案:

答案 0 :(得分:3)

您可以尝试类似

的内容
SELECT  MAX(CASE WHEN FLAG = 1 THEN Date ELSE NULL END) MaxFlag1,
        MIN(CASE WHEN FLAG = 0 THEN Date ELSE NULL END) MinFlag0
FROM    [Table]

答案 1 :(得分:1)

select flag,
       case when flag = 1 then max([date])
            when flag = 0 then min([date])
       end as date
from your_table
group by flag

答案 2 :(得分:0)

您可以使用UNION (ALL)来合并两个语句的结果。对这些陈述的唯一限制是它们都返回相同数量和相同类型的列。

应用于您的示例,这将成为

SELECT MAX(date) FROM YourTable WHERE flag = 1
UNION ALL SELECT MIN(date) FROM YourTable WHERE flag = 0