在sql中连接多个表以生成一行

eh57zj3b  于 2021-08-13  发布在  Java
关注(0)|答案(0)|浏览(176)

我有四张table。
人员id |姓名|国家代码
位置id |国家代码|状态
地址id |城市|州|国家|代码| effdt
国家代码国家描述
我正在尝试为具有id | person | country | code | country | desc(即1234 |“john smith”|“arg”|“argentina”或2345 |“stacy smith”|“usa”|“united states”)的人员构建一个包含一列的表
有时person | country | code列为null或有“”,因此我必须查看位置| country | code |状态,如果该列为null或状态不正确,我最终会查看地址| country | code,否则我只会使用“unknown”更新表。
我目前有一个案例陈述,看:个人|国家位置|国家|代码|状态地址|国家代码
基于上述标准。
最后,我必须加入country表以查找国家代码和描述。
国家代码国家描述
我的工作不正常。我有一个case语句,在所有表上都留下了连接,但是我得到了很多“unknown”和(nulls)。
我现在的代码是 SELECT PERSON.ID, CASE WHEN PERSON.COUNTRY_CODE <> ' ' THEN PERSON.COUNTRY_CODE WHEN PERSON.COUNTRY_CODE = ' ' AND LOCATION_STATUS = '1' THEN LOCATION.COUNTRY_CODE WHEN PERSON.COUNTRY_CODE = ' ' AND AND LOCATION_STATUS <> '1' THEN ADDRESS.COUNTRY_CODE ELSE NVL(ADDRESS.COUNTRY,'Unknown') END AS COUNTRY, COUNTRY.COUNTRY_DESC, ADDRESS.MAX(EFFDT), FROM PERSON LEFT JOIN LOCATION ON PERSON.ID = LOCATION.ID LEFT JOIN ADDRESS ON PERSON.ID = ADDRESS.ID LEFT JOIN COUNTRY ON PERSON.COUNTRY_CODE = COUNTRY_CODE.COUNTRY_CODE AND LOCATION.COUNTRY_CODE = COUNTRY_CODE.COUNTRY_CODE AND ADDRESS.COUNTRY_CODE = COUNTRY_CODE.COUNTRY_CODE GROUP BY PERSON.ID, PERSON.COUNTRY_CODE, LOCATION.COUNTRY_CODE, ADDRESS.COUNTRY_CODE; person.country中只有空格,没有空值。位置中没有空格或空值。地址中有空格和空。
任何帮助都将不胜感激。谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题