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

aを使用しUNION (ALL)て、2つのステートメントの結果を組み合わせることができます。これらのステートメントの唯一の制限は、両方が同じ量と同じタイプの列を返すことです。

あなたの例に適用すると、これは次のようになります

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