我有一个select语句,我想说如果这个select语句没有返回任何行,那么在每个单元格中放一个''。我该怎么做?
答案 0 :(得分:8)
select a, b, c from t
if @@rowcount = 0
select '' as a, '' as b, '' as c
但请确保您了解''
可能与列a
,b
和c
的数据类型不同。
答案 1 :(得分:5)
试试这个 -
IF NOT EXISTS ( SELECT 'x' FROM <TABLE> .... )
BEGIN
-- Your logic goes here
END
答案 2 :(得分:3)
将空行选择放在联合的底部
select x.JobName , x.Description
from MasterJobList x
where x.IsCycleJob = 1
union all
select "" , ""
from MasterJobList x
where not exists
(
select 1
from MasterJobList x
where x.IsCycleJob = 1
)
答案 3 :(得分:2)
听起来你还没有得到你想要的所有行。真正?我认为@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列表中的单位列表。左外连接将包括与每个单元关联的数据,但如果没有关联数据,则不会排除单元。
答案 4 :(得分:1)
根据发布的代码,我认为你想要删除UnitType表中的列,因为这是你唯一加入的列。在那种情况下使用
ISNULL(ut.[Description], '') AS UnitType
答案 5 :(得分:0)
select top 1 isnull(max(col2),' ') as noNullCol from table1 where col1='x'
max返回null
,其中没有行,isnull
函数返回' '
而不是null
值
答案 6 :(得分:0)
以下是我用于单个列的示例 - 如果数据集中没有匹配项,则很容易生成空白行。
select Company from customer where customer=@Company
union
select '' where not exists (select 1 from customer where customer=@Company)
如果没有匹配项,则会创建一行空格。