0

次のクエリがありますが、これはうまく機能しますが、流通センターに基づいて異なる価格を持つ各製品 (名前) の収益も決定したいと考えています。

SELECT NAME, 
       ISNULL([UK - BOLTON], 0)   [UK Website], 
       ISNULL([USA - FLORIDA], 0) [USA Website], 
       ISNULL([CANADA], 0)        [Canada Website], 
       ISNULL([AUSTRALIA], 0)     [Australia Website], 
       ISNULL([AMAZON (USA)], 0)  [Amazon (USA)], 
       ISNULL([AMAZON (UK)], 0)   [Amazon (UK)], 
       ISNULL([AMAZON (FR)], 0)   [Amazon (FR)], 
       ISNULL([AMAZON (CA)], 0)   [Amazon (CA)], 
       ISNULL([AMAZON (JP)], 0)   [Amazon (JP)] 
FROM   (SELECT p.NAME, 
               ps.UNITSSOLD, 
               CASE 
                 WHEN dc.[DESCRIPTION] = 'UK Website' THEN p.UKWEBPRICE 
               END Revenue, 
               dc.[DESCRIPTION] 
        FROM   DBO.PRODUCTSALES ps 
               INNER JOIN DBO.PRODUCT p 
                       ON ps.PRODUCTID = p.PRODUCTID 
               INNER JOIN DBO.DISTRIBUTIONCENTRE dc 
                       ON ps.DISTRIBUTIONCENTREID = dc.DISTRIBUTIONCENTREID 
        WHERE  ps.ORDERDATE >= CONVERT(DATETIME, '2013-08-01 00:00:00', 102) 
               AND ps.ORDERDATE <= CONVERT(DATETIME, '2013-08-20 00:00:00', 102) 
               AND p.PRODUCTCLASSIFICATIONID = 2) [SourceTable] 
       PIVOT ( SUM(UNITSSOLD) 
             FOR [DESCRIPTION] IN ([UK - Bolton], 
                                   [USA - Florida], 
                                   [Canada], 
                                   [Australia], 
                                   [Amazon     (USA)], 
                                   [Amazon (UK)], 
                                   [Amazon (FR)], 
                                   [Amazon (CA)], 
                                   [Amazon (JP)]) ) AS PIVOTTABLE 

ご覧のとおり、CASE/WHEN を使用してみましたが、その方法について混乱していると思います。基本的に、英国 - ボルトンは、各配送センターの Product テーブル (p) などから UKWebPRice を取得する必要があります。これは収益であるため、各センターの UnitsSold * UKWebPrice などになります。

これが理にかなっていることを願っています。

ありがとう、

マイク

4

1 に答える 1