1 行にデータを含むテーブルがあります。
Account | OrderID | OrderName | Priority | Fasting |AssignedTo |ResultsTo |Location
----------------------------------------------------------------------------------------------------------------------------
12345 | REQ123456 | Lipid Panel (1.2) |Routine | Yes |Fast, Brook |Nurse Group |Fisher Rd, Woodbridge, NV
ここで、データを UNPIVOT して、次の形式でユーザーを表示したいと考えています。
GROUPCOL | LABEL | VALUE
-------------------------------------------------
General | Account | 12345
General | OrderID | REQ123456
General | OrderName | Lipid Panel (1.2)
General | Priority | Routine
General | Fasting | Yes
Result | ResultsTo | Nurse Group
Result | AssignedTo | Fast, Brook
Result | Location | Fisher Rd, Woodbridge, NV
デフォルトで UNPIVOT が列をソートするように制限するソリューションを見つけるのに苦労しています。列を自分のやり方で並べたい。クエリは次のとおりです。
SELECT 'General' GROUPCOL, LABEL, VALUE
FROM TESTPIVOT
UNPIVOT (
VALUE FOR LABEL IN (Account, OrderID, OrderName, Priority, Fasting)
) AS UNPVT
UNION
SELECT 'Result' GROUPCOL, LABEL, VALUE
FROM TESTPIVOT
UNPIVOT (
VALUE FOR LABEL IN (AssignedTo, ResultsTo, Location)
) AS UNPVT
出力は次のとおりです。
GROUPCOL | LABEL | VALUE
-------------------------------------------------
General | Account | 12345
General | Fasting | Yes
General | OrderID | REQ123456
General | OrderName | Lipid Panel (1.2)
General | Priority | Routine
Result | AssignedTo | Fast, Brook
Result | Location | Fisher Rd, Woodbridge, NV
Result | ResultsTo | Nurse Group
どういうわけか、列に関連付けられた注文列があれば、最後に必要に応じて注文できると思いました(そのようにして、要件に従って順序を変更できます)。