假设我有下表:
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
谢谢。
答案 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