将2列合并为一列,并添加一列以使用SQL中的if或case来放置备注(Combine 2 columns in one and add a column to put remarks using if

编程入门 行业动态 更新时间:2024-10-14 00:27:24
将2列合并为一列,并添加一列以使用SQL中的if或case来放置备注(Combine 2 columns in one and add a column to put remarks using if or case in SQL)

我有3张桌子。

我想得到这个结果

我已经尝试过工会表,但它确实有效。 我只需要在一列(Type)中组合2列(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;

感谢任何帮助。 谢谢。

I have 3 tables.

I want to get this result

I have tried union tables and it worked. I just need to combine 2 columns (Num_Typ) and (Add_Typ) in one column (Type) then if address or phone number is not available then display N/A. Next I will add a column (Remarks) depending on whether they have an address , a phone number or both, address only or phone only.

Here is the Query

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;

Appreciate any help. Thanks.

最满意答案

您可以在查询中添加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 ...

You can add a CASE expression to your query which renders the message you want:

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 ...

更多推荐

本文发布于:2023-08-07 01:31:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1459064.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:并为   备注   SQL   case   Combine

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!