1

5 つの列を返す select ステートメントがあります (1 ~ 2 分かかります)。この列の 1 つは色です (つまり、赤、青、黄色の 3 色のみ)。ここで、同じselectステートメントで、赤の行数、青の行数、黄色の行数を表示したいと思います。

Selectステートメントはこれです

ここに画像の説明を入力

そして、私はこのような出力が欲しい

ここに画像の説明を入力

助けはありますか?

4

2 に答える 2

1

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
于 2012-02-08T18:55:25.433 に答える
1

これが必要です(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
于 2012-02-08T18:38:39.087 に答える