2015-09-16 36 views
0

我們試圖爲每個客戶列輸出每個月應有12個預算的行條目。
方案1:如何將SQL轉換爲使用樹中的行? sql命令中是否有任何樹可以轉置?

ie. Turn table data : 
     Name BudMnt1|BudMnt2|BudMnt3 
     cust1 0   0 0 
     cust2 0   0 0 
     cust3 2418  0 0 
     cust4 0   416 198 




into this : 
     Name cust1| cust2| cust3| cust4 
     BudMnt1 0   0 24180 0 
     BudMnt2 0   0 0  416 
     BudMnt3 0   0 0  198 

方案2: 包括方案1列預算+額外列是銷售solumn這裏 因此,它成爲兩列的預算,銷售這需要UNPIVOT單查詢結構。

ie. Turn table data : 
Name JanSales|FebSales|MarSales 
cust1  0   0 0 
cust2  0   0 0 
cust3  0   0 3 
cust4  2   0 0 

into this : 
Name cust1|cust2|cust3|cust4 
JanSales 0 0 0 2 
Feb Sales 0 0 0 0 
Mar Sales 0 0 3 0 

任何幫助,將不勝感激!

+0

由於我看不到標籤,我無法知道您正在談論的SQL語法的類型。但在Oracle中,這將是PIVOT語法(我認爲) – 0xGiddi

+0

並且您有一組固定的客戶? –

+0

感謝您的快速回復。我們正在尋找microsoft sql server 2012語法。是的,我們確實擁有固定的客戶羣 – NEO

回答

0

此代碼工作正常。在sql server 2012上嘗試它。

SELECT NAME , 
     budmtn , 
     cust 
INTO #temptable 
FROM (SELECT * 
      FROM  tbl1 
     ) AS result UNPIVOT (cust FOR budmtn IN (budmtn1, budmtn2, budmtn3)) AS unpivotedtable 

SELECT budmtn , 
     cust1 , 
     cust2 , 
     cust3 , 
     cust4 
FROM #temptable PIVOT(SUM(cust) FOR NAME IN (cust1, cust2, cust3, cust4)) AS result 
+0

非常感謝,它工作的很好。我確實有需要做多欄不透明的情況,請你幫我一下,因爲我必須將預算,銷售欄目放在一起。任何幫助,將不勝感激。 – NEO

+0

你可以發佈樣本,以便我可以找出問題嗎? – FireAlone

+0

我們已經更新了示例問題情景。請讓我知道如果您有任何問題。 – NEO