1

SQL Server 2005 を使用していて、動作していないように見える方法でクエリを作成しようとしています。

私は2つのテーブルを持っています。1 つのテーブルには ItemType のリストがあり、別のテーブルには ItemType とユーザーの間のマッピングのリストがあります。

これらの結果を返すクエリが必要です。

ID   | ItemType      | Enabled?
---------------------------------
1    | Type1         | false
2    | Type2         | true

Enabled 列は、他のテーブルにエントリがあるかどうかに基づいています。LEFT JOIN アイテムが存在する場合は、TRUE を置き、それ以外の場合は FALSE を置きます。

SELECT systype.ID, systype.TypeDescription, 
'Enable' = CASE hid.ID WHEN NULL THEN 'true' ELSE 'false' END
FROM [HardwareTestcaseManagement].[dbo].[A7_SystemItemTypes] systype
LEFT JOIN [dbo].[A7_HiddenNewsFeedTypes] hid 
ON systype.ID = hid.SystemItemTypesID
AND hid.UserName = @UserName

ただし、これまでに思いついたこのクエリ ^ は、意図したとおりに機能していません。

このクエリを調整して、希望どおりに機能させる方法について何か提案はありますか?

編集:左結合を行い、列「hid.ID」を選択すると、NULLまたは実際のIDとして返されます。nullかどうかに基づいて値を変更できることを望んでいました。

4

6 に答える 6

0

使用せずにそれを行う別の方法CASE

'Enable' = isnull(nullif(isnull(hid.id,'false'),hid.id),'true')
于 2013-10-11T17:09:40.673 に答える