2

假设我有下表:

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

谢谢你。

4

3 回答 3

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]
于 2012-08-14T05:49:13.597 回答
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
于 2012-08-14T05:48:39.273 回答
0

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

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

SELECT MAX(date) FROM YourTable WHERE flag = 1
UNION ALL SELECT MIN(date) FROM YourTable WHERE flag = 0
于 2012-08-14T05:47:57.403 回答