#sql-server #sql-server-2005 #resultset
#sql-server #sql-server-2005 #набор результатов
Вопрос:
У меня есть следующая таблица записей:
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
Ответ №1:
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
Комментарии:
1. Мне кажется, что это возвращает обратное. 2 результата, где количество равно 1, и 1 результат, где количество равно 2. Есть идеи?
2. @Curt: конечно, просто измените знак в
ON
предложении. Смотрите обновление post.3. Это великолепно. Мне потребовалось некоторое время, чтобы разобраться, как именно это работает, но теперь я знаю, думаю, это отличное решение. Приветствия.