テーブルからの出力に続く結果となるSQLクエリ(MySQL)を誰か教えてください。
質問する
112 次
2 に答える
1
あなたは PIVOT TABLE QUERY を求めています - ただし、(My)SQL で基本的な集計を実行してから、アプリケーション レベルで表示の問題を処理する方がよい場合がよくあります (例: PHP を少し使用)。
標準クエリは次のようになりますが、MySQL はこの標準からの省略表現をサポートしています...
SELECT DATE_FORMAT(date,'%M') month
, COALESCE(SUM(CASE WHEN status = 'Rahul' THEN value END),0) Rahul
, COALESCE(SUM(CASE WHEN status = 'Vijay' THEN value END),0) Vijay
, COALESCE(SUM(CASE WHEN status = 'Loki' THEN value END),0) Loki
FROM my_table
GROUP
BY MONTH(date);
于 2013-03-21T10:46:18.543 に答える
1
WITH w AS (
SELECT 10 AS value, 'Rahul' AS status, TO_DATE('20/01/2013', 'DD/MM/YYYY') AS date_time FROM dual
UNION ALL
SELECT 15, 'Vijay', TO_DATE('28/02/2013', 'DD/MM/YYYY') FROM dual
UNION ALL
SELECT 20, 'Loki', TO_DATE('03/02/2013', 'DD/MM/YYYY') FROM dual
UNION ALL
SELECT 25, 'Kiran', TO_DATE('05/01/2013', 'DD/MM/YYYY') FROM dual
UNION ALL
SELECT 5, 'Rahul', TO_DATE('02/01/2013', 'DD/MM/YYYY') FROM dual
UNION ALL
SELECT 15, 'Vijay', TO_DATE('10/01/2013', 'DD/MM/YYYY') FROM dual
UNION ALL
SELECT 08, 'Loki', TO_DATE('01/01/2013', 'DD/MM/YYYY') FROM dual
)
SELECT TO_CHAR(date_time, 'Mon') AS m
, SUM(CASE status WHEN 'Rahul' THEN value ELSE 0 END) AS Rahul
, SUM(CASE status WHEN 'Vijay' THEN value ELSE 0 END) AS Vijay
, SUM(CASE status WHEN 'Loki' THEN value ELSE 0 END) AS Loki
, SUM(CASE status WHEN 'Kiran' THEN value ELSE 0 END) AS Kiran
, SUM(value) AS Total
FROM w
GROUP BY TO_CHAR(date_time, 'Mon')
ORDER BY TO_DATE(TO_CHAR(date_time, 'Mon'), 'Mon')
;
于 2013-03-21T10:50:51.617 に答える