2
試想源表的模式:如何扁平SQL錶轉換爲行(約UNPIVOTting)
Table1: ID*, ValueA, ValueB, ValueX1, ValueX2, ValueX3, ValueY1, ValueY2, ValueY3
和目標表架構:
TableA: ID*, ValueA, ValueB
TableB: ID*, Type*, Value1, Value2, Value3
凡Table1
單排可表示爲TableA
中的1行和TableB
中的2行(其中一個具有類型X
,另一個具有類型Y
)
是的,以前的模式的存在讓我難過。不,我沒有寫。不,我不能直接改變它。 :(
我想糾正一個查詢Table1
轉換成TableB
(顯然,越來越TableA
容易。)
我知道如何與一個UNION ALL
做到這一點,但是這將是醜陋(這不僅是因爲(X,Y)
實際上是(P,Q,R,S,T,U,V,W,X,Y,Z)
,並且1 ... 3
實際上是1 ... 15
。嘆氣)
我覺得PIVOT
/UNPIVOT
有幾分隱約關閉,但我看不到有什麼具體處理這個問題 - 我總是看到一些只移動單列或單列的東西。
在任何意義上,這都可以在T-SQL中優雅地完成嗎?
完美!非常感謝。數據類型的一致性是一個要求。 (他說,意識到他沒有真正檢查過它是否真實,並且對原始模式的設計者幾乎沒有信心) – Brondahl