嗨下面的查詢是一個更大的複雜查詢的原型 問題是,我應該能夠排序任何順序(即ASC和DESC) 。用戶輸入如何排序日期時間在ROW_NUMBER()OVER(ORDER BY子句
CREATE table #Table1(
Name varchar(10) PRIMARY key,
DOB DateTime,
Rate numeric(10,2)
)
INSERT INTO #Table1 (Name,DOB,Rate) values ('Name1','2/2/2012',10.23)
INSERT INTO #Table1 (Name,DOB,Rate) values ('Name2','3/2/2012',120.23)
INSERT INTO #Table1 (Name,DOB,Rate) values ('Name3','4/2/2012',110.23)
INSERT INTO #Table1 (Name,DOB,Rate) values ('Name4','5/2/2012',140.23)
INSERT INTO #Table1 (Name,DOB,Rate) values ('Name15','6/2/2012',130.23)
INSERT INTO #Table1 (Name,DOB,Rate) values ('Name6','2/21/2012',1120.23)
Declare @SortColumn varchar(10)
DECLARE @SortExpression varchar (10)
SET @SortColumn = 'DOB'
SET @SortExpression = 'DESC' -- Need to sort in both ASC and DESC
Select
Name,
DOB,
Rate,
ROW_NUMBER() OVER
(ORDER BY
CASE WHEN @SortColumn = 'Name' then Name
WHEN @SortColumn = 'DOB' THEN DOB
WHEN @SortColumn = 'Rate' THEN Rate
END + @SortExpression
) AS RowNumber
FROM
#Table1
你有什麼錯誤? – Vikdor
[請參閱此處的答案](http://stackoverflow.com/a/1479623/73226)。單獨的查詢可能會有更好的計劃。 BTW'ASC'和'DESC'不能在你嘗試的時候進行校準,並且'CASE'的所有分支都需要被轉換爲相同的數據類型。 –