2009-09-02 38 views
0

我有以下查询我试图展现消息“不副信号源此RAO”当没有“tblOrganisation.Name”,请有看到下面的查询,它做工精细但没有显示我的消息时没有organisation.name返回的Sql ELSE情况下不能正常工作

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

+0

什么数据库系统?什么版本? – 2009-09-02 06:30:56

+0

如果您还有不那么工作现场不为空。它回来了什么? – Donnie 2009-11-29 16:16:51

回答

0
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 

不要这样它可能是你的工作。

+1

你需要学习要突出你的代码(SQL或其他方式),然后单击工具栏上的“代码”按钮(010 1010)很好地格式化! – 2009-09-02 07:28:10

+0

感谢您的建议 – KuldipMCA 2009-09-02 10:58:04

0
... 
FROM tblOrganisation 
LEFT OUTER JOIN 
tblSubGroup ON tblOrganisation.SubGroupID = tblSubGroup.SubGroupID 
--Need to change WHERE clause 
    AND 
    tblSubGroup.RAOID = @RAOID 
... 

原来的WHERE子句改变OUTER JOIN到INNER JOIN,所以你需要过滤那里。

此外,其他的一些要点:

  • 为什么tblSubGroup加入?它不用于输出。除非您使用CASE检查此

  • 是tblOrganisation.Name null或空字符串?

    ISNULL(NULLIF(tblOrganisation.Name, ''), '没有副信号源此RAO')AS 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 

不过,我还是不知道你想要什么......

+0

谢谢!我应该在where子句中更改哪些内容?你可以请给我正确的代码相同 – 2009-09-02 06:02:11

+0

对我来说没有WHERE条件的显示所有的oraganisations,以及我正在上线ISNULL(NULLIF“无法转换成字符”错误它不工作(tblSubGroup.ORGID ,''),'No ORGID')AS ORGID。有可能在我的查询 – 2009-09-02 06:14:21

+0

oops。我的错误... – gbn 2009-09-02 06:17:00

相关问题