use*_*432 5 sql sql-server sql-server-2005
我有一个select语句,我想说如果这个select语句没有返回任何行,那么在每个单元格中放一个''.我该怎么做呢?
select a, b, c from t
if @@rowcount = 0
select '' as a, '' as b, '' as c
Run Code Online (Sandbox Code Playgroud)
但要确保你明白,''可能有不同的数据类型比列a,b和c.
试试这个 -
IF NOT EXISTS ( SELECT 'x' FROM <TABLE> .... )
BEGIN
-- Your logic goes here
END
Run Code Online (Sandbox Code Playgroud)
听起来您仍然没有获得您想要的所有行。真的?我认为@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, ','))
;
Run Code Online (Sandbox Code Playgroud)
通过此更改,您将获得 @Units 列表中的单位列表。左外连接将包含与每个单元关联的数据,但如果没有关联数据,则不会排除单元。
| 归档时间: |
|
| 查看次数: |
21607 次 |
| 最近记录: |