簡體   English   中英

如何在帶有AdventureWorksDW數據庫的SQL Server上使用PIVOT表

[英]How can i use PIVOT table on SQL server with AdventureWorksDW database

我列出了客戶的總銷售數量,但我想使用PIVOT表逐年列出客戶的總銷售數量。

有我的SQL查詢。

SELECT  FirstName ,
        LastName ,
        EnglishProductName ,
        CASE WHEN CalendarYear = '2001' THEN Quantity
             ELSE 0
        END AS '2001 Sales' ,
        CASE WHEN CalendarYear = '2002' THEN Quantity
             ELSE 0
        END AS '2002 Sales' ,
        CASE WHEN CalendarYear = '2003' THEN Quantity
             ELSE 0
        END AS '2003 Sales' ,
        CASE WHEN CalendarYear = '2004' THEN Quantity
             ELSE 0
        END AS '2004 Sales'
FROM    ( SELECT    CUS.FirstName ,
                    CUS.LastName ,
                    PROD.EnglishProductName ,
                    SUM(SALE.OrderQuantity) Quantity ,
                    TAR.CalendarYear
          FROM      DimProduct AS PROD
                    INNER JOIN FactInternetSales AS SALE ON SALE.ProductKey = PROD.ProductKey
                    INNER JOIN DimTime AS TAR ON TAR.TimeKey = SALE.OrderDateKey
                    INNER JOIN DimCustomer AS CUS ON CUS.CustomerKey = SALE.CustomerKey
          GROUP BY  CUS.FirstName ,
                    CUS.LastName ,
                    EnglishProductName ,
                    CalendarYear
        ) AS SUB

如何更改此查詢? 謝謝。

    select   FirstName,
             LastName,
             EnglishProductName,
             [2001],
             [2002],
             [2003],
             [2004] from
    (
    select   CUS.FirstName,
             CUS.LastName,
             PROD.EnglishProductName,
             SUM(SALE.OrderQuantity) Quantity,
             TAR.CalendarYear YIL
    from DimProduct as PROD
             inner join FactInternetSales as SALE on SALE.ProductKey = PROD.ProductKey
             inner join DimTime as TAR on TAR.TimeKey = SALE.OrderDateKey
             inner join DimCustomer as CUS on CUS.CustomerKey = SALE.CustomerKey
    group by CUS.FirstName,
             CUS.LastName,
             EnglishProductName, 
             CalendarYear
) as gTablo
    PIVOT
    (
    SUM(Quantity)
    FOR YIL IN ([Name],[2001],[2002],[2003],[2004])
    )
    as P
    order by FirstName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM