SQL Serverで、case文はこれを行うことができ、2列のいずれかを選択する必要がありますか?

StackOverflow https://stackoverflow.com/questions/1691690

質問

私のテーブルます:

ユーザ(ユーザ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を使用したり、一方を他方に変換するために変換する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top