お世話になっております。
下記のようなtable_aがあり、以下のような条件でレコードを抽出したいと考えております。
① Company columnはAに絞る
② Yearが最大のもので絞る。
③ ただし、②のYear最大は少なくとも一つはvalueがNOT NULLが存在する場合の最大のyearとする
この条件の場合id4,id7の2つのカラムが抽出されると思います。
id4 -> company Aであり、Year2016でNOT NULLが存在するため,Yearは2016である。
id6-> company Aであり、Year2016でNOT NULLが存在するため,Yearは2016である。
例えばCompany Bのように2016のレコード自体が存在するが その場合のvalueがすべてNULL(NOT NULLのレコードが存在しない)であるため、Yearは2015が最大として,id8とid12のレコードだけに絞られる。
そこで以下のようなSQL文を考えたのですが、うまく意図した条件で絞ることができません。どなたか、上記の条件で絞ろうとする場合のSQL文をご助言願えますでしょうか。
よろしくお願い申し上げます。
table_a id company name Year value 1 A asset1 2013 100 2 A asset1 2014 150 3 A asset1 2015 200 4 A asset1 2016 220 5 A asset2 2015 100 6 A asset2 2016 NULL 7 A asset3 2016 60 8 B asset4 2015 100 9 B asset4 2016 NULL 10 B asset5 2016 NULL 11 B asset6 2014 30 12 B asset6 2015 25
SQL文 SELECT t1.* from table_a t1 JOIN (SELECT max(year) year from table_a GROUP BY company where value IS NOT NULL) t2 using (year) where t1.company="a"
回答3件
あなたの回答
tips
プレビュー