0

基本的に、これを取ることが可能かどうか疑問に思います

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列を返します。

4

1 に答える 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がないと、結果セットの形状を実際に変更することはできません。

于 2012-06-15T18:50:10.760 に答える