私は問題を解決できるアプローチを認識していますが、派生テーブルのorder by句はカスタムソートを台無しにしています。私の入力と出力の詳細と私が試したことはここにあります。派生テーブルのorder by句を含むカスタムソートの実行
スキーマ: - 入力: -
CREATE TABLE Test(Rowname VARCHAR(10), Col1 DATETIME, Col2 DATETIME, Col3 DATETIME, Col4 DATETIME);
INSERT INTO Test VALUES('Row1', '2016-01-14', '2016-01-08', '2016-01-30', '2016-01-01');
INSERT INTO Test VALUES('Row2', '2016-01-02', '2016-01-01', '2016-01-18', '2016-01-15');
予想される出力は: -
RowName Result
Row1 Col4,Col2,Col1,Col3
Row2 Col2,Col1,Col4,Col3
私が試してみましたか?
WITH CTE(RowName,Colmn,RN) AS
(
SELECT RowName,Colmn,ROW_NUMBER() OVER(PARTITION BY RowName ORDER BY RowName) AS RN
FROM
(
(SELECT RowName,Col1 AS Col,'Col1' AS Colmn FROM Test)
UNION ALL
(SELECT RowName,Col2 AS Col,'Col2' AS Colmn FROM Test)
UNION ALL
(SELECT RowName,Col3 AS Col,'Col3' AS Colmn FROM Test)
UNION ALL
(SELECT RowName,Col4 AS Col,'Col4' AS Colmn FROM Test)
) Z
ORDER BY RowName,Col
)
SELECT RowName,
MAX((CASE WHEN RN = 1 THEN Colmn END)) + ',' +
MAX((CASE WHEN RN = 2 THEN Colmn END)) + ',' +
MAX((CASE WHEN RN = 3 THEN Colmn END)) + ',' +
MAX((CASE WHEN RN = 4 THEN Colmn END)) AS Result
FROM CTE
GROUP BY RowName;
注: -
RowName BY ORDERそれがSQL Serverで許可されていないとして、内側のクエリ/派生テーブル内のコル句が失敗しています。このORDER BYを使用しない場合、ORDER BY句を使用せずにカスタムソートを実行するにはどうすればよいですか?