2013-08-06 46 views
1

我已經建立了這個查詢,以與組支點:沒有成功通過

SELECT * 
FROM 
(
    SELECT [VendorCode], [VendorName], 
     year(CheckDate) as 'year', 
     left(datename(month,CheckDate),3) as [month], 
     [CheckSum] as 'Amount' 
    FROM ocho 
    WHERE [Canceled] ='N' 
) as abc 
PIVOT 
(
    SUM(Amount) 
    FOR [month] IN (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec) 
) AS sumpivot 

我得到一個表,每個供應商不被總結到一排,每個供應商在12個月或更少,取決於我們支付他們多少個月。我試圖通過對 vendorcodename進行分組,我得到了一個失敗。

+0

我努力理解你的問題 - 請你編輯問題並且包括你遇到的錯誤,以及它是什麼,你需要幫助? – Hexie

+1

你是什麼意思_我得到失敗_?你有錯誤嗎?請用一些示例數據和期望的結果編輯您的問題。 – Taryn

+0

夥計,非常感謝你,你幫了我很多。 –

回答

0

我認爲一切工作正常 -

查詢:

DECLARE @temp TABLE 
(
     VendorCode INT 
    , VendorName NVARCHAR(50) 
    , CheckDate DATETIME 
    , Canceled CHAR(1) 
    , [CheckSum] DECIMAL(10,2) 
) 

INSERT INTO @temp (VendorCode, VendorName, CheckDate, Canceled, [CheckSum]) 
VALUES 
    (1, '1', '20100101', 'N', 4), 
    (2, '2', '20100303', 'N', 2), 
    (2, '2', '20100601', 'N', 1), 
    (2, '2', '20100604', 'N', 99) 

SELECT * 
FROM 
(
    SELECT 
      [VendorCode] 
     , [VendorName] 
     , [year] = YEAR(CheckDate) 
     , [month] = LEFT(DATENAME(MONTH, CheckDate), 3) 
     , Amount = [CheckSum] 
    FROM @temp 
    WHERE Canceled = 'N' 
) abc 
PIVOT 
(
    SUM(Amount) 
    FOR [month] IN (
       jan, feb, mar, 
       apr, may, jun, 
       jul, aug, sep, 
       oct, nov, [dec]) 
) sumpivot 

輸出:

VendorCode VendorName year jan feb mar apr may jun  jul aug sep oct nov dec 
----------- ---------- ------ ------ ----- ----- ----- ----- ------- ----- ----- ----- ------ ------ ------ 
1   1   2010 4.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 
2   2   2010 NULL NULL 2.00 NULL NULL 100.00 NULL NULL NULL NULL NULL NULL