5 つの列を返す select ステートメントがあります (1 ~ 2 分かかります)。この列の 1 つは色です (つまり、赤、青、黄色の 3 色のみ)。ここで、同じselectステートメントで、赤の行数、青の行数、黄色の行数を表示したいと思います。
Selectステートメントはこれです
そして、私はこのような出力が欲しい
助けはありますか?
5 つの列を返す select ステートメントがあります (1 ~ 2 分かかります)。この列の 1 つは色です (つまり、赤、青、黄色の 3 色のみ)。ここで、同じselectステートメントで、赤の行数、青の行数、黄色の行数を表示したいと思います。
Selectステートメントはこれです
そして、私はこのような出力が欲しい
助けはありますか?
CTE (共通テーブル式) の使用:
;
WITH cte AS
( SELECT ...
... your query here
)
WITH grp AS
( SELECT
color
, COUNT(*) AS cnt
FROM
cte
GROUP BY
color
)
SELECT
cte.*
, (SELECT cnt FROM grp WHERE color = 'Red') AS Red
, (SELECT cnt FROM grp WHERE color = 'Blue') AS Blue
, (SELECT cnt FROM grp WHERE color = 'Yellow') AS Yellow
FROM
cte
これが必要です(SQL Server 2005以降の場合):
SELECT *, SUM(CASE WHEN Color = 'RED' THEN 1 ELSE 0 END) OVER() [RED],
SUM(CASE WHEN Color = 'BLUE' THEN 1 ELSE 0 END) OVER() [BLUE],
SUM(CASE WHEN Color = 'Yellow' THEN 1 ELSE 0 END) OVER() [Yellow]
FROM YourTable