基本上,我想知道是否可以采取这个
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时,第一列将为null。我希望仅当@Value为1时才返回2列,其余时间则返回1列。< / p>
答案 0 :(得分: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,则无法真正更改结果集的形状。