2011-04-21 26 views
4

我已經記錄下表:返回多個結果取決於數量字段

Product  | Colour | Quantity 
--------------------------------------- 
Product A | Blue |   1 
Product A | Red  |   2 
Product B | Green |   1 

我如何編寫一個查詢返回以下?:

Product  | Colour 
--------------------------- 
Product A | Blue 
Product A | Red 
Product A | Red 
Product B | Green 

回答

5
WITH numbers (rn) AS 
     (
     SELECT MAX(quantity) 
     FROM product 
     UNION ALL 
     SELECT rn - 1 
     FROM numbers 
     WHERE rn > 1 
     ) 
SELECT p.* 
FROM product p 
JOIN numbers n 
ON  p.quantity >= n.rn 
+0

這似乎返回對我來說是相反的。 2數量爲1的結果,以及1數量爲2的結果。任何想法? – Curt 2011-04-21 14:24:43

+0

@Curt:當然,只需更改'ON'子句中的符號即可。查看帖子更新。 – Quassnoi 2011-04-21 14:25:35

+0

這真是太棒了。花了我一段時間才弄清楚它是如何工作的,但現在我知道,認爲它是一個很好的解決方案。乾杯。 – Curt 2011-04-26 13:22:51