0
我有以下查詢偉大的工程,但我也想確定所得收入用於各產品(名稱),它具有基於配送中心不同的價格:SQL CASE產品價格
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,但我認爲我對如何做到這一點感到困惑。基本上英國 - 博爾頓應該從每個配送中心的產品表(p)等中選擇UKWebPRice,並且這是收入,因此每個中心都應該是UnitsSold * UKWebPrice等。
希望這是有道理的。
感謝,
邁克
您可以添加一些示例數據和一些更多的解釋,以便我們可以嘗試幫助您;-)或甚至更好,在SQL小提琴上設置一個示例,以便我們可以瞭解最新進展 – Gidil
您可以檢查此示例... ......但很難知道你在做什麼。請寄一些DDL和樣本數據。對接猜測建議:http://stackoverflow.com/questions/15235320/sql-server-case-statements/15235415#15235415 – granadaCoder