SQL Serverで、case文はこれを行うことができ、2列のいずれかを選択する必要がありますか?
-
18-09-2019 - |
質問
私のテーブルます:
ユーザ(ユーザID、COL1、COL2)
私は、一般的なストアドプロシージャを作成したいが、私は、クエリのcol1やcol2のいずれかを返す必要があります。
私はcase文この状況に対処することはできますか?
SELECTユーザーID、COL1 ユーザーからの
または
SELECTユーザーID、COL2 ユーザーからの
解決
CASEを使用します:
SELECT t.userid,
CASE
WHEN [something to evaluate why to show col1 vs col2 ] THEN
t.col1
ELSE
t.col2
END
FROM USERS t
COALESCEを使用します:
SELECT t.userid,
COALESCE(t.col1, t.col2)
FROM USERS t
COALESCEは、左から、ヌルでない最初の列の値を返します。
他のヒント
はい、限り、あなたは同じ列名を返す気にしないようます:
SELECT userID, ArbitraryCol = CASE WHEN @param = 1 then col1 ELSE col2 END
FROM Users
は、変更する列ヘッダーが必要な場合は、あなたがIF文を使用する必要があります。
IF @param = 1
BEGIN
SELECT userID, col1 FROM Users
END
ELSE
BEGIN
SELECT userID, col2 FROM Users
END
私は、SQL Server 2000/2005は、このようなものだと思います。
select
UserID,
case UserID
when 1 then Col1
when 2 then Col2
else 'boo'
end as SpecialSituation
from
Users
それは、あなたが代わりにCOL2のcol1のを返すときのための論理式を持っていると仮定することができます:
SELECT USERID CASE WHEN USERTYPE='X' THEN COL1 ELSE COL2 END FROM USERS
col1とcol2には、異なるタイプである場合は、、あなたはCASTを使用したり、一方を他方に変換するために変換する必要があります。
所属していません StackOverflow