我有这个疑问: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, –