小编典典

SQL如果没有返回任何行,请执行此操作

sql

我有一条select语句,我想说一下此select语句是否不返回任何行,然后在每个单元格中放入一个”。我该怎么做呢?


阅读 164

收藏
2021-05-23

共1个答案

小编典典

听起来您仍然没有获得想要的所有行。真的?我认为@Joe Sefanelli为您的解决方案提供了重要的部分,然后提到您需要将INNER更改为LEFT联接。

因此,您说要显示单位列表中的所有单位。并且,如果没有单位的数据,则显示该单位,并显示不存在的数据的空白。

这是一个可能的解决方案。将您的FROM子句更改为以下内容:

FROM  [dbo].[Unit] u 
LEFT OUTER JOIN 
    (
    SELECT *
    FROM [dbo].[IUA] i
    JOIN [dbo].[Reports] r ON r.[Report_ID] = i.[Report_ID]
    JOIN [dbo].[State] s ON i.[St_ID] = s.[St_Id]
    WHERE r.[Account] = [dbo].[fn_Get_PortalUser_AccountNumber](11-11)
        AND r.[Rpt_Period] = '2126'
        AND r.[RptName] = 'tfd'
        AND r.[Type] = 'h'    
    ) ir ON ir.[Unit_ID] = u.[Unit_ID]
LEFT JOIN [dbo].[UnitType] ut ON u.[UnitType] = ut.[UnitType]
WHERE u.[Unit] IN (SELECT [VALUE] 
               FROM dbo.udf_GenerateVarcharTableFromStringList(@Units, ','))
;

进行此更改后,您将获得@Units列表中的单位列表。左外部联接将包括与每个单元关联的数据,但如果没有关联的数据,则不排除单元。

2021-05-23