Table

使用 SQL 進行表轉換?

  • February 27, 2014

我得到了一組表,這些表已通過轉換它們被導入數據庫,如下圖所示:

表轉換

現在有必要取回以前的表。不幸的是,做進口的人完成了學業,因此不可用。因此,我被要求找到一個基於 SQL 的解決方案來對錶進行反向轉換。我可以寫一個小工具來解決這個問題,但我不知道如何用 SQL 來解決這個問題。

親切的問候,

像這樣的東西可能會奏效(這裡是 SQLFiddle

SELECT 
Line,
MAX(CASE WHEN `Column` = 'C1' THEN `Value` END) AS C1,
MAX(CASE WHEN `Column` = 'C2' THEN `Value` END) AS C2,
MAX(CASE WHEN `Column` = 'C3' THEN `Value` END) AS C3,
MAX(CASE WHEN `Column` = 'C4' THEN `Value` END) AS C4
FROM YourTable
GROUP BY Line

就像 Sascha 在他們的回答中建議的那樣,您可能需要考慮將其創建為視圖,或者在完成將表恢復原狀後創建一個類似於表 2 的視圖。這應該可以防止這種問題在未來再次出現。

對於 SQLserver,您可以簡單地使用 SELECT…PIVOT

對於 MySQL,問題已在此處得到解決: https ://stackoverflow.com/questions/1241178/mysql-rows-to-columns

比將數據透視到表中更好的解決方案是使用透視視圖並使表保持不變,順便說一句。

引用自:https://dba.stackexchange.com/questions/59796