如果你想要的結果是這樣的:
AuctionID Month Won Expired
----------- ------------------------------ ---- -------
1 January Won NULL
2 January Won NULL
3 January NULL Expired
然後,你可以使用此查詢:
SELECT
A.AuctionID,
DATENAME(mm, B.Date) AS Month,
CASE Status WHEN 'Won' THEN 'Won' ELSE NULL END AS Won,
CASE Status WHEN 'Expired' THEN 'Expired' ELSE NULL END AS Expired
FROM BID b
INNER JOIN Auction a ON B.AuctionID = A.AuctionID
ORDER BY Month, AuctionID
但如果你想要的結果是這樣的:
AuctionID Month Status
----------- ------------------------------ --------------------
1 January Won
2 February Won
3 January Expired
然後這個查詢會做:
SELECT
A.AuctionID,
DATENAME(mm, B.Date) AS Month,
Status
FROM BID b
INNER JOIN Auction a ON B.AuctionID = A.AuctionID
ORDER BY Status Desc, Month DESC, AuctionID
第三次嘗試。要得到這樣的:
Month Won Expired
------------------------------ ----------- -----------
January 1 1
February 1 0
使用此查詢:
SELECT
DATENAME(mm, B.Date) AS Month,
SUM(CASE WHEN Status = 'Won' THEN 1 ELSE 0 END) AS Won,
SUM(CASE WHEN Status = 'Expired' THEN 1 ELSE 0 END) AS Expired
FROM BID b
INNER JOIN Auction a ON B.AuctionID = A.AuctionID
GROUP BY DATENAME(mm, B.Date), B.Date
ORDER BY b.Date
來源
2014-02-21 07:18:23
jpw
你想要在這些列中顯示哪些數據? – Szymon
一次拍賣會贏得和過期嗎? –
沒有任何拍賣可以贏得或過期不是兩個 – user3287068