の値をEXISTS
クエリの一部として使用することはできますか?
(注意: 残念ながら、クライアントの制約により、SQLServer 2005 互換の回答が必要です!)
したがって、一連の結果を返す場合、列の 1 つは、サブクエリが行を返すかどうかを示すブール値です。
たとえば、ユーザー名のリストと、別のテーブルに各ユーザーの行が含まれているかどうかを返したいとします。以下は構文的に正しくありませんが、私の言いたいことが理解できると思います...
SELECT T1.[UserName],
(EXISTS (SELECT *
FROM [AnotherTable] T2
WHERE T1.[UserName] = T2.[UserName])
) AS [RowsExist]
FROM [UserTable] T1
結果セットには、 と呼ばれる列と[UserName]
と呼ばれるブール列が含まれ[RowsExist]
ます。
明らかな解決策はCASE
、以下のような a を使用することですが、それを行うためのより良い方法があるかどうか疑問に思いました...
SELECT T1.[UserName],
(CASE (SELECT COUNT(*)
FROM [AnotherTable] T2
WHERE T1.[UserName] = T2.[UserName]
)
WHEN 0 THEN CAST(0 AS BIT)
ELSE CAST(1 AS BIT) END
) AS [RowsExist]
FROM [UserTable] T1