次のような相関サブクエリを使用してそれを行うことができます:
SELECT Company, Date, (SELECT COUNT(*) FROM MyTable AS T1 WHERE T1.Flag='Y' AND T1.Company=T2.Company AND T1.Date=T2.Date) AS Count_Y, (SELECT COUNT(*) FROM MyTable AS T1 WHERE T1.Flag='N' AND T1.Company=T2.Company AND T1.Date=T2.Date) AS Count_N FROM MyTable AS T2 GROUP BY Company, Date
プレ>もっと簡潔にすることもできますが、おそらく
SUM
トリック:SELECT Company, Date, SUM(CASE WHEN Flag='Y' THEN 1 ELSE 0 END) AS Count_Y, SUM(CASE WHEN Flag='N' THEN 1 ELSE 0 END) AS Count_N, FROM MyTable GROUP BY Company, Date
プレ>Oracle/PLSQL では、
DECODE
関数を使用してCASE
を置き換えることができます さらに簡潔に:SELECT Company, Date, SUM(DECODE(Flag,'Y',1,0)) AS Count_Y, SUM(DECODE(Flag,'N',1,0)) AS Count_N, FROM MyTable GROUP BY Company, Date
プレ>