2016-11-10 88 views
-4

消息512,級別16,狀態1,行2子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,不允許使用 。消息512,級別16,狀態1,行2子查詢返回了多個值。這是不允許的

如LocationId ,CASE WHEN(從Ware.dbo.Dimf升其中t.OriginalLocationId = l.LocationId和t.CompanyId = l.CompanyId選擇LocationId)(從Ware.dbo.DimU UT其中t選擇UnitTypeId。 unit_type = ut.UnitType)IS NULL THEN 9999 ELSE (從Ware.dbo.DimU中選擇UnitTypeId,其中t.unit_type = ut.UnitType)END作爲UnitTypeId ,CASE WHEN(從Ware.dbo.Dimc中選擇FirmwareId其中t .FirmwareVersion = f.Firmware和t.CompanyId = f.CompanyId)IS NULL THEN 9999 ELSE (從Ware.dbo.Dimc中選擇FirmwareId,其中t.FirmwareVersion = f.Firmware和t.CompanyId = f.CompanyId) END as FirmwareId ,ISNULL(t.Installs,0)as安裝

,ADDDATE = GETDATE() 從#TEMP2噸 其中(選擇LocationId從Ware.dbo.Dimf升其中t.OriginalLocationId = l.LocationId和t.CompanyId = l.CompanyId)不爲空 訂單通過LocationId

+7

是的,有什麼問題嗎? – jarlh

+2

有什麼不清楚的錯誤信息? –

+0

我在問你是否可以幫助重寫查詢 – ALE

回答

1

聽過加入.......也許你可以試試.....

Select l.LocationId    as LocationId 
    , ISNULL(ut.UnitTypeId, 9999) as UnitTypeId 
    , ISNULL(f.FirmwareId , 9999) as FirmwareId 
    , ISNULL(t.Installs,0)  as Installs 
    , GETDATE()     as AddDate 
from #Temp2 t 
LEFT JOIN Ware.dbo.Dimf l ON t.OriginalLocationId = l.LocationId 
          and t.CompanyId = l.CompanyId 
LEFT JOIN Ware.dbo.DimU ut ON t.unit_type = ut.UnitType 
LEFT JOIN Ware.dbo.Dimc f ON t.FirmwareVersion = f.Firmware 
          and t.CompanyId = f.CompanyId 
where l.LocationId is not null 
Order by l.LocationId 
相關問題