我有以下SQL來獲取員工的地址和其他信息。僅當所有列都爲空時才從其他表中選擇
SELECT
emp_id,
emp_name,
@addr1 = ISNULL(ma.addr1, ba.addr1),
@addr2 = ISNULL(ma.addr2, ba.addr2),
@addr3 = ISNULL(ISNULL(ma.addr3, ba.addr3),''),
@addr4 = ISNULL(ISNULL(ma.addr4, ba.addr4),''),
@addr5 = ISNULL(ISNULL(ma.addr5, ba.addr5),''),
@postCode = ISNULL(ma.postcode, ba.postcode)
FROM dbo.employee e
INNER JOIN MainAddress ma ON ma.AddressId=e.AddressId
INNER JOIN SecondaryAddress ba ON ba.AddressId=e.AddressId
問題是,當地址1或地址主其他字段爲NULL時,它將採取ADDR3或其他在輔助地址和示出了混合兩個地址。這是完全無效的。
當主地址中的所有字段都是NULL(不可用)時,如何獲得輔助地址?
注意:用戶可以更新這兩個表或只有一個表。
如果ma.IdAddress是NULL,那麼您將得不到結果。將'INNER JOIN'改爲'LEFT JOIN'。 – JodyT
有時記錄不會在兩個表中都可用。這是問題 – Billa
@Billa不,這不是問題。它有我給你的解決方案。我已經改進了我的答案,向你展示瞭如何使用CTE來縮短和清理它。 – JotaBe