餐桌上的人

ID | NAME   | PHNO |ADDRESS_TYPE
1  |  XXXX  |  999 |   HOME
2  |  YYYY  | 888   | OFFICE

表家庭地址
ID PERSON_ID ADDRESS
1  | 1      | XXXXXXXXXXX

办公桌地址
ID PERSON_ID ADDRESS
1  | 2      | XXXXXXXXXXX

在这里,我希望查询根据ADDRESS_TYPE将HOME_ADDRESS和OFFICE_ADDRESS连接起来,从table PERSON获取记录,如果ADDRESS_TYPE是HOME,那么它应该从table HOME_ADDRESS获取地址详细信息其他明智的地址详细信息应该来自table OFFICE_ADDRESS。
我正在使用postgresql数据库。

最佳答案

这是mssql sintax,但是试试这个:

select p.*, CASE WHEN p.ADDRESS_TYPE = 'HOME' THEN h.ADDRESS ELSE o.ADDRESS END from Person p
LEFT OUTER JOIN HOME_ADDRESS h on p.Id = h.PERSON_ID AND p.ADDRESS_TYPE = 'HOME'
LEFT OUTER JOIN OFFICE_ADDRESS o on p.ID = o.PERSON_ID AND p.ADDRESS_TYPE= 'OFFICE'

关于sql - 如何编写查询以基于表A的一列值将表A连接到表B或C?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34014291/

10-11 03:31