Sql ELSE案例不起作用
我有下面的查询,我试图在没有组织的情况下显示消息“此RAO没有子资源”。名称“,请查看下面的查询,它工作正常,但在没有组织的情况下不显示我的消息。返回名称Sql ELSE案例不起作用,sql,Sql,我有下面的查询,我试图在没有组织的情况下显示消息“此RAO没有子资源”。名称“,请查看下面的查询,它工作正常,但在没有组织的情况下不显示我的消息。返回名称 DECLARE @RAOID INT, @ORGID INT SET @ORGID = 28 SET @RAOID = (SELECT RAOID FROM tblOrganisation WHERE ORGID = @ORGID) PRINT @RAOID IF @RAOID IS NOT NULL BEGIN SELECT
DECLARE @RAOID INT, @ORGID INT
SET @ORGID = 28
SET @RAOID = (SELECT RAOID FROM tblOrganisation WHERE ORGID = @ORGID)
PRINT @RAOID
IF @RAOID IS NOT NULL
BEGIN
SELECT
CASE
WHEN tblOrganisation.ORGID IS NOT NULL THEN tblOrganisation.ORGID
ELSE 'No ORGID'
END AS ORGID,
CASE
WHEN tblOrganisation.Name IS NOT NULL THEN tblOrganisation.Name
ELSE 'No SubSource for this RAO'
END as SUBSOURCENAME
FROM tblOrganisation
LEFT OUTER JOIN tblSubGroup ON tblOrganisation.SubGroupID = tblSubGroup.SubGroupID
WHERE
tblSubGroup.RAOID = @RAOID
END
谢谢
致以最良好的祝愿,
MS
最初的WHERE子句将外部联接更改为内部联接,因此需要在其中进行筛选
此外,还有其他几点:
- 为什么加入tblSubGroup?它不用于输出。除非你正在用箱子检查
- TblorOrganization.Name是空字符串还是空字符串 ISNULL(NULLIF(tblorganization.Name.),“此RAO无子源”)作为ORGID
DECLARE @RAOID INT, @ORGID INT
SET @ORGID = 28
SET @RAOID = (SELECT RAOID FROM tblOrganisation WHERE ORGID = @ORGID)
PRINT @RAOID
IF @RAOID IS NOT NULL
BEGIN
SELECT
ISNULL(tblSubGroup.ORGID), 'No ORGID') AS ORGID,
ISNULL(NULLIF(tblSubGroup.Name, ''), 'No SubSource for this RAO') AS SUBSOURCENAME
FROM
tblOrganisation
LEFT OUTER JOIN
tblSubGroup ON tblOrganisation.SubGroupID = tblSubGroup.SubGroupID
AND
tblSubGroup.RAOID = @RAOID
END
DECLARE @RAOID INT, @ORGID INT
SET @ORGID = 28
SET @RAOID = (SELECT RAOID FROM tblOrganisation WHERE ORGID = @ORGID)
PRINT @RAOID
IF @RAOID IS NOT NULL
BEGIN
SELECT
CASE
WHEN tblOrganisation.ORGID IS NOT NULL THEN tblOrganisation.ORGID
ELSE 'No ORGID'
END AS ORGID,
**CASE isnull(tblOrganisation.Name,'')
WHEN '' THEN 'No SubSource for this RAO'
ELSE tblOrganisation.Name**
END as SUBSOURCENAME
FROM tblOrganisation
LEFT OUTER JOIN tblSubGroup ON tblOrganisation.SubGroupID = tblSubGroup.SubGroupID
WHERE
tblSubGroup.RAOID = @RAOID
END
但是,我还是不知道你想要什么
DECLARE @RAOID INT, @ORGID INT
SET @ORGID = 28
SET @RAOID = (SELECT RAOID FROM tblOrganisation WHERE ORGID = @ORGID)
PRINT @RAOID
IF @RAOID IS NOT NULL
BEGIN
SELECT
ISNULL(tblSubGroup.ORGID), 'No ORGID') AS ORGID,
ISNULL(NULLIF(tblSubGroup.Name, ''), 'No SubSource for this RAO') AS SUBSOURCENAME
FROM
tblOrganisation
LEFT OUTER JOIN
tblSubGroup ON tblOrganisation.SubGroupID = tblSubGroup.SubGroupID
AND
tblSubGroup.RAOID = @RAOID
END
DECLARE @RAOID INT, @ORGID INT
SET @ORGID = 28
SET @RAOID = (SELECT RAOID FROM tblOrganisation WHERE ORGID = @ORGID)
PRINT @RAOID
IF @RAOID IS NOT NULL
BEGIN
SELECT
CASE
WHEN tblOrganisation.ORGID IS NOT NULL THEN tblOrganisation.ORGID
ELSE 'No ORGID'
END AS ORGID,
**CASE isnull(tblOrganisation.Name,'')
WHEN '' THEN 'No SubSource for this RAO'
ELSE tblOrganisation.Name**
END as SUBSOURCENAME
FROM tblOrganisation
LEFT OUTER JOIN tblSubGroup ON tblOrganisation.SubGroupID = tblSubGroup.SubGroupID
WHERE
tblSubGroup.RAOID = @RAOID
END
这样做可能对你有用。谢谢!我需要在where子句中更改什么?你能给我正确的代码吗?它对我不起作用,因为没有where条件。它显示了所有的Organization,并且我在Organization的第行得到了“无法转换为字符”的错误。错误为null(NULLIF(tblSubGroup.ORGID),,,,,,“No ORGID”)。在我的询问中可能吗?如果不需要的话。我只在.Name中添加了空字符串,而不是空字符串。什么数据库系统?什么版本?如果您的else不工作,则该字段不为空。它返回了什么?您需要学习突出显示您的代码(SQL或其他),然后单击工具栏上的“代码”按钮(010 1010)以很好地格式化它!