2009-09-02 22 views
0

が動作していません組織名がない場合は私のメッセージが表示されません。SQLのELSE場合は、私は、クエリの下に私がメッセージ<strong>何<strong>「tblOrganisation.Name」</strong>がない場合、それは正常に動作し、クエリ以下に見てください</strong>「この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 
    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

どのデータベースシステムですか?どのバージョン? –

+0

あなたのelseが動作していない場合、フィールドはnullではありません。それは何を返すのですか? – Donnie

答えて

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)をクリックしてうまく整形する必要があります。 –

+0

アドバイスありがとう – KuldipMCA

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

句はOUTER JOINをINNER JOINをに変化しているので、あなたがそこにフィルタリングする必要WHERE元。

また、他のいくつかのポイント:

  • はなぜtblSubGroupに参加しますか?出力には使用されません。 CASEでこれをチェックしない限り

  • tblOrganisation.Nameはnullまたは空の文字列ですか?

    ORGID

これを試してみてくださいAS

ISNULL(NULLIF(tblOrganisation.Name、 '')、 'この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 
     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節で何を変更する必要がありますか?あなたは私に正しいコードを教えてください。同じ –

+0

のために私のために働いていない状態で、すべてのoraganisationsを表示するだけでなく、 "Can not convert char"エラーが出ています。ISNULL(NULLIF(tblSubGroup.ORGID) 、 '')、 'ORGID')ORGID。私の質問で可能になります –

+0

oops。私の間違い... – gbn

関連する問題

 関連する問題