2016-04-20 27 views
1

當前我正在嘗試學習數據透視表,這裏是我的表格圖。SQL Server中的數據透視表導致錯誤

enter image description here

我要生成分支名和列數據行與一個月合計的銷售額。

SELECT * 
FROM 
    (SELECT 
     BRANCH.NAME, SALES.TOTAL, TIME.MONTH 
    FROM 
     SALES 
    INNER JOIN 
     BRANCH ON SALES.BRANCH_ID = BRANCH.BRANCH_ID 
    INNER JOIN 
     TIME ON SALES.TIME_ID = TIME.TIME_ID 
    ) AS TABLE1 
PIVOT (
    SUM(SALES.TOTAL) FOR TIME.MONTH IN ([APR],[MAY],[JUN]) 
) PIVOTTABLE 

它顯示了一個錯誤:

The column prefix 'SALES' does not match with a table name or alias name used in the query.

這是我的表結構得到了問題,或者只是我的查詢是錯誤的?

+0

吧?對不起,我不明白... –

+0

@Roberto仍然無法正常工作。 –

+1

您的標題是全部大寫。這裏沒有理由。我們可以讀得很好。看看主頁上的所有其他問題,你會發現沒有人覺得有必要關注他們的問題。 (您的標題完全缺乏內容; SQL Server是標籤中的可用信息,* Pivot Table *不是問題或問題描述,您應該[編輯]修復這兩個問題。) –

回答

1

試試這個:

SELECT * FROM 
(
    SELECT BRANCH.NAME,SALES.TOTAL,TIME.MONTH 
    FROM SALES 
    INNER JOIN BRANCH 
    ON SALES.BRANCH_ID=BRANCH.BRANCH_ID 
    INNER JOIN TIME 
    ON SALES.TIME_ID=TIME.TIME_ID 
)AS TABLE1 
PIVOT (
SUM(TABLE1.TOTAL) FOR TABLE1.MONTH IN ([APR],[MAY],[JUN]) 
) PIVOTTABLE 
2

刪除SalesTime前綴或使用TABLE1代替:

PIVOT (
    SUM(TOTAL) FOR MONTH IN ([APR],[MAY],[JUN]) 
) PIVOTTABLE 
+0

是的。爲了進一步闡述Giorgi的答案:在查詢之後發生數據透視,因此在子查詢列上進行透視。我認爲SUM(TABLE1.TOTAL)會起作用 - 這是一個不必要的步驟,但只是爲了向您顯示實際上指的是哪一列。 –