2016-04-06 7 views
0

条件付き選択文を作成しようとしていますが、条件設定しているパラメータが返す列です。意味 - テーブルのある列について何かが真であれば、その列を返したい。もしそうでなければ、私は他の列を返したい。条件付きSQL文 - 返される列の調整

例:

IF table.obj_param_A = ? 
BEGIN 
SELECT obj_param_A FROM table 
END 
ELSE 
BEGIN 
SELECT obj_param_B FROM table 
END 

私は、これは動作しません知っているが、それは私が何をしたいの一般的な考えです。どのようにこれを適切に構造化するか考えていますか?

答えて

0

あなたは、列名が返さ心配していない場合は、下記CASE

SELECT 
    CASE 
     WHEN obj_param_A = ? THEN obj_param_A 
     ELSE obj_param_B 
    END AS value 
FROM table 
+0

ない場合のみ、この場合の値とは何ですか?ので、これはiVersion2からデータを返す必要がありますか – hden

+0

値は、結果の列の名前です。 – LoztInSpace

0

を使用することができますが、特定の列から選択するために、特定の列についてのテーブル情報を使用する方法の一例です。

Drop Table dbo.Test 
Create Table dbo.Test (iVersion int, iVersion2 smallmoney) 
Insert Into dbo.Test 
Select 1, 1.12 

Declare @Test as nvarchar(200) 
Select @Test = Column_Name from information_schema.columns where Table_Schema = 'dbo' and table_name = 'test' and Ordinal_Position = 1 

--IF (@Test = 'iVersion') --Equal To iVersion 
IF (@Test != 'iVersion') ---Not Equal To iVersion 
BEGIN 
SELECT iVersion FROM dbo.Test 
END 
ELSE 
BEGIN 
SELECT iVersion2 FROM dbo.Test 
END 

の最初の列の名前が「IVERSION」で、IfステートメントがIVERSIONを返し、それが最初の列