SortOrder FundType
9 DD
2 DD
13 FF
22 BB
11 FF
我想按FundType分组,然后按OrderOrder分组。但我想维持这个顺序与FundType:DD,FF,BB
所以我希望最终输出看起来像:
SortOrder FundType
2 DD
9 DD
11 FF
13 FF
22 BB
我不能通过FundType DESC,SortOrder订购,因为那时FF将首先出现,我不能按照FundType,SortOrder进行订购,因为那时BB将首先出现。
如何设置查询,我指定FundType的顺序,然后在每个FundType分组中应用Order By?感谢。
答案 0 :(得分:1)
您可以使用CTE
来计算每个组的顺序:
;WITH CTE AS (
SELECT FundType, MIN(SortOrder) AS GroupOrder
FROM #mytable
GROUP BY FundType
)
SELECT *
FROM CTE
以上,给出以下输入:
CREATE TABLE #mytable (SortOrder INT, FundType VARCHAR(10))
INSERT INTO #mytable VALUES
(9, 'DD'),
(2, 'DD'),
(4, 'FF'),
(22, 'BB'),
(11, 'FF')
生成此输出:
FundType GroupOrder
----------------------
BB 22
DD 2
FF 4
我们现在可以使用此CTE
按组订单排序,然后按SortOrder
排序:
;WITH CTE AS (
... cte statements here
)
SELECT m.*
FROM CTE AS c
INNER JOIN #mytable AS m ON c.FundType = m.FundType
ORDER BY GroupOrder, SortOrder
<强>输出:强>
SortOrder FundType
--------------------
2 DD
9 DD
4 FF
11 FF
22 BB