我有一個名爲purchase_hs的表。在那張表中我有一些關卡日期。使用case語句添加日期間隔mysql
+-----------+------------+------------+------------+------------+----------------+
| level1 | level2 | level3 | level4 | level5 | transport_mode |
+------------+------------+------------+------------+------------+----------------+
| 2015-02-15 | 15.02.2015 | 21.02.2015 | 19.03.2015 | 16.03.2015 | SEA |
| 2015-02-17 | 17.02.2015 | 17.02.2015 | | 16.03.2015 | AIR |
| 2015-02-17 | 17.02.2015 | 17.02.2015 | | 16.03.2015 | AIR |
| 2015-02-17 | 17.02.2015 | 17.02.2015 | | 16.03.2015 | AIR |
+------------+------------+------------+------------+------------+----------------+
現在根據運輸方式,我需要一些日子添加到水平dates.If傳輸模式=「下海」需要28天增加1級,2級以及3級,如果TRANSPORT_MODE =「AIR」我需要將14天添加到level1,level2和level3,並且剩餘的level4和level5在顯示時保持不變。 我試圖通過使用下面的查詢來獲取。但它不適合我。
SELECT level1,level2,level3,level4,level5,transport_mode,
CASE WHEN transport_mode = 'SEA'
THEN
DATE_ADD(level1, INTERVAL 28 DAY) level1, DATE_ADD(STR_TO_DATE(level2, '%d.%m.%Y'), INTERVAL 28 DAY) level2,
DATE_ADD(STR_TO_DATE(level3, '%d.%m.%Y'), INTERVAL 28 DAY) level3
ELSE
transport_mode = 'AIR'
THEN
DATE_ADD(level1, INTERVAL 14 DAY) level1, DATE_ADD(STR_TO_DATE(level2, '%d.%m.%Y'), INTERVAL 14 DAY) level2,
DATE_ADD(STR_TO_DATE(level3, '%d.%m.%Y'), INTERVAL 14 DAY) level3
END
FROM purchase_hs
我desierd出認沽將
+------------+------------+------------+------------+------------+----------------+
| level1 | level2 | level3 | level4 | level5 | transport_mode |
+------------+------------+------------+------------+------------+----------------+
| 2015-03-15 | 15.03.2015 | 2015-03-18 | 19.03.2015 | 16.03.2015 | SEA |
| 2015-03-04 | 04.03.2015 | 04.03.2015 | | 16.03.2015 | AIR |
| 2015-03-04 | 04.03.2015 | 04.03.2015 | | 16.03.2015 | AIR |
| 2015-03-04 | 04.03.2015 | 04.03.2015 | | 16.03.2015 | AIR |
+------------+------------+------------+------------+------------+----------------+
因此,如何能實現我這個放出來?請建議我
非常感謝,這對我的作品,但如果我有2種以上的運輸方式的話,我怎麼能提case語句? – user3408779 2015-03-31 04:57:42
你可以有多個'WHEN'子句。 – Barmar 2015-03-31 05:00:59
'CASE transport_mode'SEA'then 28'AIR'then 14'CARRIER_PIGEON'60 60 ELSE 90 END' – Barmar 2015-03-31 05:01:49