29

次のように、SQLクエリのセクションごとに変数を使用できることを理解しています。

order by 
case when @var1 = 'priority' then priority end desc,
case when @var2 = 'report_date' then report_date end asc

しかし、asc セクションと desc セクションにも変数を使用するにはどうすればよいでしょうか?

4

4 に答える 4

45

各オプションなしDynamic SQLでは、たとえば句です。

ORDER BY
  case when @var1 = 'priority asc' THEN priority END ASC ,
  case when @var1 = 'priority desc' then priority end DESC,
  case when @var2 = 'report_date asc' then report_date end ASC,
  case when @var2 = 'report_date desc' then report_date end DESC
于 2013-08-13T11:40:41.777 に答える
8

変数@var3ストア'ASC'または'DESC'キーワードを想定すると、次のように記述できます。

order by 
case when @var1 = 'priority' and @var3 = 'DESC' then priority end DESC,
case when @var1 = 'priority' and @var3 = 'ASC' then priority  end ASC,
case when @var2 = 'report_date' and @var3 = 'ASC' then report_date end ASC,
case when @var2 = 'report_date' and @var3 = 'DESC' then report_date end DESC
于 2013-08-13T11:42:08.307 に答える
7

これを試してみてください -

DECLARE 
      @column VARCHAR(15) = 'object_id'
    , @order CHAR(4) = 'DESC'

DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = '
SELECT * 
FROM sys.objects 
ORDER BY ' + @column + ' ' + @order

PRINT @SQL
EXEC sys.sp_executesql @SQL
于 2013-08-13T11:40:36.213 に答える