2017-10-20 8 views
1

나는 이것으로 붙어있다.MAX를 사용하는 SQL 피벗 테이블

SELECT [COST UNIT],[GL ACCOUNT]+ ' ' + [GL], SUM([CLOSING BALANCE]) AS [TOTAL GL CLOSING BALANCE] FROM 
(
    SELECT AB.StartDate AS [DATE], AB.FreeTextField_04 AS [COST UNIT], IT.GLAccountDistribution AS [GL ACCOUNT], GL.Description AS [GL], ST.ItemCode AS [ITEM CODE] , 
    ST.Description AS [DESCRIPTION], 
    IT.UserField_03 AS PACKAGING, ST.StockOnHandUOM AS [U/MEA.], IT.CostPriceStandard AS [STD COST PRICE], ST.PhyStkTakeQty AS [STOCK QTY], 
    CAST(ROUND((ST.PhyStkTakeQty * IT.CostPriceStandard),2) AS DECIMAL(12,2)) AS [CLOSING BALANCE] 
    FROM [001].DBO.CS738281StkTake ST INNER JOIN [001].DBO.Absences AB ON ST.ReqID = AB.ID 
    INNER JOIN [200].DBO.Items IT ON ST.ItemCode = IT.ItemCode 
    INNER JOIN [200].DBO.GRV_GLAccounts GL ON IT.GLAccountDistribution = GL.GLAccount 
    WHERE AB.StartDate = '2017-08-31 0:00:00.000' 
    --AND AB.FreeTextField_02 in ('1CTY','bsp') 
    AND IT.GLAccountDistribution IN (12010010,12010020,12010030,12010040,12010041,12010042,12010043,12010050,12010060,12010080,12030010) 
    --ORDER BY [GL ACCOUNT],[ITEM CODE] 
) tmp 
GROUP BY [GL ACCOUNT], [GL], [COST UNIT] 
ORDER BY [COST UNIT],[GL ACCOUNT] 

내 목적과 같이하는 피벗 테이블을하는 것입니다 : - -이 : 여기 Result

이 코드는 - : 나는 SQL 스크립트 TU는 이러한 정보를 얻기 개발 Required Result

여러 번 시도했지만 작동하지 못했습니다. 누구든지 도와 줄 수 있습니까? 정말 감사합니다 :)

답변

0

이 같은 MAX으로 PIVOT 테이블 연산자를 사용

WITH CTE 
AS 
(
    SELECT [COST UNIT],[GL ACCOUNT]+ ' ' + [GL], SUM([CLOSING BALANCE]) AS [TOTAL GL CLOSING BALANCE] FROM 
    (


     SELECT AB.StartDate AS [DATE], AB.FreeTextField_04 AS [COST UNIT], IT.GLAccountDistribution AS [GL ACCOUNT], GL.Description AS [GL], ST.ItemCode AS [ITEM CODE] , 
      ST.Description AS [DESCRIPTION], 
      IT.UserField_03 AS PACKAGING, ST.StockOnHandUOM AS [U/MEA.], IT.CostPriceStandard AS [STD COST PRICE], ST.PhyStkTakeQty AS [STOCK QTY], 
      CAST(ROUND((ST.PhyStkTakeQty * IT.CostPriceStandard),2) AS DECIMAL(12,2)) AS [CLOSING BALANCE] 
      FROM [001].DBO.CS738281StkTake ST INNER JOIN [001].DBO.Absences AB ON ST.ReqID = AB.ID 
      INNER JOIN [200].DBO.Items IT ON ST.ItemCode = IT.ItemCode 
      INNER JOIN [200].DBO.GRV_GLAccounts GL ON IT.GLAccountDistribution = GL.GLAccount 
      WHERE AB.StartDate = '2017-08-31 0:00:00.000' 
      --AND AB.FreeTextField_02 in ('1CTY','bsp') 
      AND IT.GLAccountDistribution IN (12010010,12010020,12010030,12010040,12010041,12010042,12010043,12010050,12010060,12010080,12030010) 
      --ORDER BY [GL ACCOUNT],[ITEM CODE] 

    ) tmp 
    GROUP BY [GL ACCOUNT], [GL], [COST UNIT] 
) 
SELECT * 
FROM 
(
    SELECT GL, [COST UNIT], [TOTAL GL CLOSING BALANCE] 
    FROM CTE 
) AS t 
PIVOT 
(
    MAX([TOTAL GL CLOSING BALANCE]) 
    FOR [COST UNIT] IN([1CTY], [AMCP], [AMPO]) 
) AS p 
+0

안녕 디미트리을, 귀하의 의견에 감사드립니다. - 메시지 8155, 수준 16, 상태 2, 줄 1 'MyCTE'열 2에 대해 열 이름이 지정되지 않았습니다. –