簡體   English   中英

使用多個表時如何使用 CASE 條件

[英]How to use CASE condition when using more than one table

我想使用案例語句來檢查信用卡的到期情況。 我有兩張桌子 -

  1. Table_A - account_no, account_id
  2. Table_B - account_no、account_status、date_of_card_expiry

上述字段的數據類型有 - 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM