次のように、SQLクエリのセクションごとに変数を使用できることを理解しています。
order by
case when @var1 = 'priority' then priority end desc,
case when @var2 = 'report_date' then report_date end asc
しかし、asc セクションと desc セクションにも変数を使用するにはどうすればよいでしょうか?
次のように、SQLクエリのセクションごとに変数を使用できることを理解しています。
order by
case when @var1 = 'priority' then priority end desc,
case when @var2 = 'report_date' then report_date end asc
しかし、asc セクションと desc セクションにも変数を使用するにはどうすればよいでしょうか?
各オプションなし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
変数@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
これを試してみてください -
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