簡體   English   中英

將2列合並為一個並添加一列以在SQL中使用if或case進行注釋

[英]Combine 2 columns in one and add a column to put remarks using if or case in SQL

我有3張桌子。

在此處輸入圖片說明

我想得到這個結果

在此處輸入圖片說明

我已經嘗試了聯合表,它的工作。 我只需要將兩列(Num_Typ)和(Add_Typ)合並到一列(類型)中,然后如果地址或電話號碼不可用,則顯示N / A。 接下來,我將添加一列(備注),這取決於它們是否具有地址,電話號碼或同時具有這兩個地址,僅地址還是僅電話。

這是查詢

SELECT
A.NAMES, 
A.CODE, 
B.NUM_TYP, 
B.PHONE_NUN, 
B.ADD_TYP, 
B.ADDR
FROM NAMES A LEFT JOIN

(
SELECT PHONE.ID, PHONE.NUM_TYP, PHONE.PHONE_NUM, ADDRESS.ADD_TYP, ADDRESS.ADDR
FROM PHONE LEFT JOIN ADDRESS ON (PHONE.NUM_TYP = ADDRESS.ADD_TYP) AND (PHONE.ID = ADDRESS.ID)

UNION
SELECT ADDRESS.ID, PHONE.USG_TYP, PHONE.PHONE_NUM, ADDRESS.ADD_TYP, ADDRESS.ADDR
FROM ADDRESS LEFT JOIN PHONE ON (ADDRESS.ADD_TYP = PHONE.NUM_TYP) AND (ADDRESS.ID = PHONE.ID)) AS B ON A.ID = B.ID;

感謝任何幫助。 謝謝。

您可以在查詢中添加CASE表達式,以呈現所需的消息:

SELECT
    A.NAMES, 
    A.CODE, 
    B.NUM_TYP, 
    B.PHONE_NUN, 
    B.ADD_TYP, 
    B.ADDR,
    CASE WHEN B.PHONE_NUN IS NOT NULL AND B.ADDR IS NULL
         THEN 'MEMBER HAS PHONE ONLY'
         WHEN B.ADDR IS NOT NULL AND B.PHONE_NUM IS NULL
         THEN 'MEMBER HAS ADDR ONLY'
         WHEN B.PHONE_NUN IS NOT NULL AND B.ADDR IS NOT NULL
         THEN 'MEMBER HAS BOTH' END AS REMARKS
FROM NAMES A
LEFT JOIN ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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