[英]How to use CASE condition when using more than one table
我想使用案例語句來檢查信用卡的到期情況。 我有兩張桌子 -
上述字段的數據類型有 - account_no - NUMBER, account_id - NUMBER, account_status - NUMBER, date_of_card_expiry - CHAR
我必須編寫查詢以檢查卡是否會在 30 天或 60 天內到期。 下面是我的查詢,但它在第 4 行給出了無效的關系運算符錯誤。
SELECT a.account_no, a.account_id, b.account_status,b.date_of_card_expiry
FROM Table_A a
JOIN Table_B b
ON (a.account_no = b.account_no
AND a.account_id IN ('1','2','7')
AND (
CASE WHEN (to_date(b.date_of_card_expiry, 'MMYY')) = to_date(to_char(sysdate+60, 'MMYY'),'MMYY') then 'card will expire after 2 months'
CASE WHEN (to_date(b.date_of_card_expiry, 'MMYY')) = to_date(to_char(sysdate+30, 'MMYY'),'MMYY') then 'card will expire after 1 month'))
請幫我更正查詢。
您需要將條件用作列,如下所示。
我已經修改了條件邏輯,如下,如果今天和card_expiry_date之間的天數差異超過60天,那么它標記為'卡在2個月后過期'和超過30天,閱讀'卡過期1 個月后”。 但是我認為如果日期的差異不符合這兩個標准中的任何一個,您還需要一個 else 部分來顯示
SELECT a.account_no, a.account_id, b.account_status,b.date_of_card_expiry
,CASE WHEN to_date(b.date_of_card_expiry, 'MMYY')-trunc(sysdate)>=60 then
'card will expire after 2 months'
WHEN to_date(b.date_of_card_expiry, 'MMYY')-trunc(sysdate)>=30 then
'card will expire after 1 month'
END as card_status
FROM Table_A a
JOIN Table_B b
ON (a.account_no = b.account_no
AND a.account_id IN ('1','2','7')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.