次のクエリがありますが、これはうまく機能しますが、流通センターに基づいて異なる価格を持つ各製品 (名前) の収益も決定したいと考えています。
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 などになります。
これが理にかなっていることを願っています。
ありがとう、
マイク