exec ('select * from variable_table_name
order by @variable')
テーブル名と並べ替え列を指定する動的SQLステートメントをまとめようとしています。SQLを機能させるためにテーブル名を指定できると便利です。
@variable sort byが指定されていない場合に、並べ替えるテーブルの最初の列を選択する方法はありますか?
exec ('select * from variable_table_name
order by @variable')
テーブル名と並べ替え列を指定する動的SQLステートメントをまとめようとしています。SQLを機能させるためにテーブル名を指定できると便利です。
@variable sort byが指定されていない場合に、並べ替えるテーブルの最初の列を選択する方法はありますか?
次を使用できます。
ORDER BY 1;
order_by_expression-クエリ結果セットを並べ替える列または式を指定します。ソート列は、名前または列エイリアス、あるいは選択リスト内の列の位置を表す非負の整数として指定できます。
(強調鉱山)
このスクリプトはその仕事をするはずです
DECLARE @tbl NVARCHAR(128)
DECLARE @col NVARCHAR(128)
DECLARE @sql NVARCHAR(MAX)
SET @tbl = 'MyTbl'
SET @col = '' --enter column name when required
IF @col = ''
BEGIN
SET @sql = 'SELECT * FROM ' + @tbl + ' ORDER BY 1'
END
ELSE
SET @sql = 'SELECT * FROM ' + @tbl + ' ORDER BY ' + @col
EXEC(@sql)
このようなもの(例としてAdventureworksを使用しました):-
DECLARE @SORTCOLUMN varchar(50);
SET @SORTCOLUMN = 'OrganizationLevel';
IF @SORTCOLUMN IS NULL
EXEC('SELECT * FROM HumanResources.Employee ORDER BY 1')
ELSE
EXEC('SELECT * FROM HumanResources.Employee ORDER BY ' + @SORTCOLUMN)
'SET @SORTCOLUMN'行を省略して、デフォルトで最初の列に設定します