2012-06-15 54 views
0

基本上,我想知道是否有可能借此只有在設置了變量的情況下,纔有可能返回select語句中的列?

IF @Value = 1 
    SELECT col1, col2 FROM MyTable 
ELSE 
    SELECT col2 FROM MyTable 

而且做一個單獨的語句?像

SELECT IF(@Value = 1 col1), col2 FROM MyTable 

東西我已經試過這

SELECT case @Value when 1 then col1 end, col2 FROM MyTable 

它總是返回2列,但第一個將是無效的時候@Value不是1.我想它返回2個列如果@Value是1,剩下的時間是一列。

回答

4

有了動態SQL,是的。

DECLARE @sql NVARCHAR(MAX); 
SELECT @sql = N'SELECT ' + CASE WHEN @Value = 1 THEN 
    'col1, ' ELSE '' END + 'col2 FROM dbo.MyTable;'; 
PRINT @sql; 
--EXEC sp_executesql @sql; 

沒有動態SQL,您無法真正改變結果集的形狀。

相關問題