我在Azure Databricks上的Jupiter Notebook中有一个SQL查询,这给了我以下错误
SQL语句中的错误:AnalysisException:非等式谓词中不允许相关列:
查询看起来像这样
Select p.PrdId, p.ProductDescription, p.PoolId, p.UomId, p.MpgId,
(Select First(ToDemandGroupId) From MasterData.UpdatesToProduct up Where
(
IsNull(up.DemandGroupId) = 0
Or
up.DemandGroupId = p.DemandGroupId
) ) as DemandGroupId1
From Raw.ProductPreUpdates p
如果我分别在子查询的where子句中执行这两个部分中的任何一个,则查询可以工作,但是当两个部分都存在时,会出现此错误。因此,如果我只有IsNull(up.DemandGroupId)= 0,则可以正常工作;或者如果我只有up.DemandGroupId = p.DemandGroupId,则可以正常工作,但不能同时使用。
问题出在查询的p.DemandGroupId部分。如果我将up.DemandGroupId = p.DemandGroupId替换为up.DemandGroupId = 4,那也可以。