MySQL に次のフィールドを持つテーブルがあります。
id, company_name, year, state
同じ顧客と年に対して複数の行があります。データの例を次に示します。
id | company_name | year | state
----------------------------------------
1 | companyA | 2008 | 1
2 | companyB | 2009 | 2
3 | companyC | 2010 | 3
4 | companyB | 2009 | 1
5 | companyC | NULL | 3
このテーブルからビューを作成して、行ごとに 1 つの会社 (つまりGROUP BY
、pubco_name) を表示しようとしています。ここでは、州が特定の年で最も高い場所です。
作成しようとしているビューの例を次に示します。
id | cuompany_name | NULL | 2008 | 2009 | 2010
--------------------------------------------------
1 | companyA | NULL | 1 | NULL | NULL
2 | companyB | NULL | 2 | NULL | NULL
3 | companyC | 3 | NULL | NULL | 3
これよりも多くのデータがありますが、私が達成しようとしていることを見ることができます。
各年の最大州を選択し、pubco_name でグループ化する方法がわかりません。CASE
ここに私がこれまでに持っているSQLがあります( and/or hereを使用する必要があると思いsub-selects
ます):
SELECT
id,
company_name,
SUM(CASE WHEN year = 2008 THEN max(state) ELSE 0 END) AS 2008,
SUM(CASE WHEN year = 2009 THEN max(state) ELSE 0 END) AS 2009,
SUM(CASE WHEN year = 2010 THEN max(state) ELSE 0 END) AS 2010,
SUM(CASE WHEN year = 2011 THEN max(state) ELSE 0 END) AS 2011,
SUM(CASE WHEN year = 2012 THEN max(state) ELSE 0 END) AS 2012,
SUM(CASE WHEN year = 2013 THEN max(state) ELSE 0 END) AS 2013
FROM tbl
GROUP BY company_name
ORDER BY id DESC
ご協力に感謝し、事前に感謝します。