0
私は、動的SQL文で使用されるクエリを持っています。この場合、選択されたフィールド、その注文、ソートのプリファレンスのリストを取得して、SORT
ステートメントを作成しています。TSQLソートデータが機能しない
-- Insert the data into the sort statements
INSERT into @sortStatements (sortStatement)
SELECT fo.fieldName + ' ' + b.FilterValues
FROM red.dbo.BS_ContentRequests_Tasks_User_Fields AS a
JOIN red.dbo.BS_ContentRequests_Tasks_Fields_Options AS fo
ON a.fieldID = fo.fieldID
JOIN (
Select Main.fieldID, Left(Main.FilterValues,Len(Main.FilterValues)-1) As "FilterValues"
From
(
Select distinct ST2.fieldID,
(
Select ISNULL(ST1.[sortType], 'ASC') + ', ' AS [text()]
From red.dbo.BS_ContentRequests_Tasks_User_Fields ST1
JOIN dbo.BS_ContentRequests_Tasks_Fields_Options AS fl
ON st1.fieldID = fl.fieldID
Where ST1.fieldID = ST2.fieldID
AND ST1.QID = @QID
ORDER BY ST1.sortOrder ASC
For XML PATH ('')
) [FilterValues]
From red.dbo.BS_ContentRequests_Tasks_User_Fields ST2
WHERE ST2.QID = @QID
) [Main]
) as b
ON a.fieldID = b.fieldID
WHERE a.QID = @QID
SELECT * FROM @sortStatements
-- Trim off the trailing comma
SELECT @sortClause = coalesce(@sortClause + ', ', '') + sortStatement
FROM @sortStatements
-- Set a variable to hold the whole WHERE logic which we will append later
SET @sort = (SELECT @sortClause)
SELECT @sort
sortStatements
の結果セットは以下の通りです:
私は私のコードで使用、最終的な文字列(@sort
の結果は)次のとおりです。
requestContentType ASC, dateRequested ASC, desiredCompletion ASC, dueDate ASC, requestID DESC, requestTitle ASC, requestType DESC, startDate ASC, requestStatus ASC, taskName ASC, requestorName ASC, requestorNTID ASC, taskStatus ASC, taskID ASC
問題ここでは、それらのフィールド名が正しい順序でなければならないということです。真ん中のステートメントでは、私はorder by節を持っていますここでsortOrder
でそれを注文すると、そのソート値を持つフィールド名、それがであるべき順番されています、最終的な出力は、順不同であなたが見ることができるように
..ですですこのクエリの一部は、自分のものをオーバーライドする並べ替えの種類を引き起こしますか?私はいくつかの領域にorder by clause
を配置しようとしましたが、最終出力は変更されません。
思考?
ああのおかげで、1がいることをしようとしなかったことができ@sortStatementsの世代にはsortOrderを追加 - 素晴らしい仕事! – SBB
私はそのワニに噛まれました –
この回答は、文書化されていないが一貫したSQL Serverの動作によって異なります。私は、[ここで](https://davegugg.wordpress.com/2015/01/29/creating-a-comma-separated-list-with-for)に記述されているように、 'FOR XML PATH'と' STUFF'を使うことをお勧めします-xml-path-and-stuff /)を使用します。 – HABO