我有這個疑問:Case語句中JOIN
Select b.building_pk, bil.building_fk, bil.BillingAccountStatus_fk, b.ACTL_TNT_CT
From [DB].[Schema].Building b (nolock)
left Join [DB].[Schema].Billing bil (nolock) on bil.building_fk = b.building_pk
join ##GlobalTempTable1 tt (nolock) on tt.Building_fk = b.building_pk
Order by b.building_pk;
它工作正常。但是我想在bil.building_fk
和bil.BillingAccountStatus_fk
列的結果集中覆蓋NULL
s,因爲Billing tbl中的所有內容都不存在於建築物表格中。
所以寫下面的查詢,但得到這個錯誤信息。
消息102,級別15,狀態1,行7'='附近語法不正確。
請協助。
SELECT b.building_pk, bil.building_fk As [BLD Key from Billing], bil.BillingAccountStatus_fk, b.ACTL_TNT_CT As [ActualTenantCount]
FROM [DB].[Schema].Building b (nolock)
join ##GlobalTempTable1 tt (nolock) ON tt.Building_fk = b.building_pk
left Join [DB].[Schema].Billing bil (nolock) ON
CASE
WHEN bil.building_fk IS NOT NULL
THEN bil.building_fk = b.building_pk AND bil.BillingAccountStatus_fk = bil.BillingAccountStatus_fk
WHEN bil.building_fk IS NULL
THEN bil.building_fk = NULL AND bil.BillingAccountStatus_fk = 'Not in Billing'
END
ORDER BY b.building_pk;
您的邏輯多個錯誤,如'= NULL'。 –
CASE不是一個聲明,它是一個函數/表達式。它應該返回一個值,而不是嘗試賦值。 – RBarryYoung
您不能使用這種情況下的表達式。你在這裏有很多問題很難解決所有問題。全局臨時表。由於併發問題,這些問題非常嚴重。你有NOLOCK亂丟一切。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/你有條件檢查列= NULL。這不起作用,因爲Nothing = NULL。那些需要使用ISNULL或COALESCE, –