SortOrder FundType
9 DD
2 DD
13 FF
22 BB
11 FF
私はFundTypeでグループ化し、次にSortOrderで並べ替える必要があります。しかし、私はこのタイプをFundTypeに応じて維持したいと思っています:DD、FF、BB
だから私は最終的な出力を次のようにしたい:
SortOrder FundType
2 DD
9 DD
11 FF
13 FF
22 BB
FundType DESC、SortOrderによる注文にはできません。なぜなら、FFが最初に表示され、OrderType By SortOrderを実行できないからです.BBが最初に表示されるからです。
FundTypeの順番を指定してクエリを設定し、各FundTypeグループ内でOrder Byを適用するにはどうすればよいですか?ありがとう。
回答:
回答№1は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