2017-03-09 160 views
-1

Original DataSQL轉置成多列行

Required Result

我在FIG1數據,需要調換的列行作爲Fig2(所需的結果)。

這將是多年和時期

+0

做一個UNION ALL,爲每個描述類型選擇一個。 – jarlh

+0

你使用的是什麼sql平臺? – Hogan

回答

0
select Division, Period, 'Total Cost' as Description, TotalCost as Value 
from MyTable 
union 
select Division, Period, 'Discount' as Description, Discount as Value 
from MyTable 
union 
select Division, Period, 'Net Sales' as Description, NetSales as Value 
from MyTable 
union 
select Division, Period, 'Net Returns' as Description, NetReturns as Value 
from MyTable 
union 
select Division, Period, 'Gross Sales' as Description, GrossSales as Value 
from MyTable 
union 
select Division, Period, 'Gross Returns' as Description, GrossReturns as Value 
from MyTable 

你也可以把這個包在一個視圖,然後做一個選擇上,你需要

+0

謝謝喬,只是不能解決它,嘗試了最複雜的代碼。 – LDD

+0

@LDD - 很好,我很高興你完成了。如果此問題已完成,請通過接受答案來解決此問題。 (順便說一句...我先回答) – Joe

0

在任何平臺上的任何排序或篩選視圖UNION ALL將會工作。某些平臺有UNPIVOT,但您沒有說明您正在使用的是什麼。

SELECT Division, Period, 'Total Cost' AS DESCRIPTION, TotalCost as Value 
FROM A_TABLENAME_YOU_DID_NOT_SAY 

UNION ALL 

SELECT Division, Period, 'Discount' AS DESCRIPTION, DISCOUNT AS Value 
FROM A_TABLENAME_YOU_DID_NOT_SAY 

UNION ALL 

SELECT Division, Period, 'Net Sales' AS Descripion, NETSALES AS Value 
FROM A_TABLENAME_YOU_DID_NOT_SAY 

UNION ALL 

SELECT Division, Period, 'Net Returns' AS DESCRIPTION, NETRETURNS AS Value 
FROM A_TABLENAME_YOU_DID_NOT_SAY 

UNION ALL 

SELECT Division, Period, 'Gross Sales' AS DESCRIPTION, GROSSSALES AS Value 
FROM A_TABLENAME_YOU_DID_NOT_SAY 

UNION ALL 

SELECT Division, Period, 'Gross Returns' AS DESCRIPTION, GROSSRETURNS AS Value 
FROM A_TABLENAME_YOU_DID_NOT_SAY 
+0

謝謝!創意表名稱給我留下了深刻的印象。 – LDD

+0

@LDD - [I_SAY]。[DONT_MOCK_THE_TABLE_NAME] – Hogan