2016-04-06 57 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

什麼是在這種情況下的價值? – 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 

這應當會返回iVersion2數據以來的第一列的名稱是「iVersion」和IF語句返回iVersion只有當它是不是第一列