[英]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.