嘗試撰寫一個查詢來檢查列是否等于某值。如果是這樣,取日期列的值然后減去某個值。
查詢如下所示:
select
v.voyage "Voyage"
,v.service "Service"
,to_char(vp.eta_date, 'MONTH dd, yyyy') "ETA"
,case
when v.service = "USA" then to_char(vp.eta_date, 'MONTH dd, yyyy') - 2
else 'n/a'
end as 'Notice'
from
table
// bunch of joins
當我運行上面的程式時,我收到一個錯誤訊息:
FROM keyword not found where expected
錯誤指向“通知”一詞。
我基本上想檢查 service 是否等于 'USA',如果是,則使用 eta_date 減去 2 給我通知列中的日期。
如果不是,那么在“通知”列中就這樣“不適用”。
我做錯了什么,我該如何解決?
uj5u.com熱心網友回復:
有幾個語法錯誤和引號混淆使這變得混亂。這些是引號規則(與您的代碼相關)
- 對字串使用單引號
- 對列別名使用雙引號
然后是這部分:
to_char(vp.eta_date, 'MONTH dd, yyyy') - 2它告訴 sql 引擎從格式為“MONTH dd,yyyy”的字串中減去 2。您可能的意思是從日期 (vp.eta_date) 中減去 2 天,然后將其格式化為“MONTH dd, yyyy”,可以寫為to_char(vp.eta_date - 2, 'MONTH dd, yyyy')
把它們放在一起給出
select
v.voyage "Voyage"
,v.service "Service"
,to_char(vp.eta_date, 'MONTH dd, yyyy') "ETA"
,case
when v.service = "USA" then to_char(vp.eta_date - 2, 'MONTH dd, yyyy')
else 'n/a'
end as "Notice"
from
table
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/380072.html
下一篇:字典葉生成器
