以下のテーブルがあったとします。
テーブル名:tbl_table1
ID | 商品NO | 種類 | 日付1 | 日付2 |
---|---|---|---|---|
1 | 100 | 1 | 2018-04-03 | NULL |
2 | 100 | 1 | 2018-04-02 | NULL |
3 | 100 | 2 | NULL | 2018-04-05 |
4 | 100 | 2 | NULL | 2018-04-04 |
ID:int型
商品NO:int型
種類:int型
日付1:datetime型
日付2:datetime型
このとき、
IDが「2」で種類が「1」の日付1の値(2018-04-02)と、
IDが「4」で種類が「2」の日付2の値(2018-04-04)を取得したいのですが、
SELECT 商品NO,MIN(CASE WHEN 日付1 IS NULL THEN '9999-01-01' WHEN 日付1 = 0 THEN NULL ELSE 日付1 END) as plnt, MIN(CASE WHEN 日付2 IS NULL THEN '9999-01-01' WHEN 日付2 = 0 THEN NULL ELSE 日付2 END) as plnk FROM tbl_table1 WHERE 商品NO=100 GROUP BY 商品NO
このSQLから条件を追加して実現したいのですが可能でしょうか。
最終的な結果が
商品NO | plnt | plnk |
---|---|---|
100 | 2018-04-02 | 2018-04-04 |
が望ましいです。
よろしくお願いいたします。
申し訳ございません。条件を詳しく書くと、
IDが「2」で種類が「1」の日付1の値(2018-04-02)はSQLでいうと、
SELECT TOP 1 商品NO,日付1 FROM tbl_table1 WHERE 種類=1 ORDER BY ID DESC
つまり、種類が「1」で一番最後に登録されたレコード を取得したいということです。
IDが「4」で種類が「2」の日付2の値(2018-04-04)も同様です。
日付1及び2はNULL以外にdatetimeの初期値(1900-01-01 00:00:00.000)も含まれる場合もあります。
説明不足により申し訳ございませんが、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/12 07:48
2018/04/12 07:57
2018/04/12 09:18