【发布时间】:2021-03-11 07:04:55
【问题描述】:
使用 SQL Server:
我有一张桌子,里面有不同的物品和数量 按数量需要多行以将每一块放在不同的行上
原始表:
| Code | QTY |
|---|---|
| Item1 | 1 |
| Item2 | 3 |
| Item3 | 2 |
我需要的结果:
| Code | QTY |
|---|---|
| Item1 | 1 |
| Item2 | 1 |
| Item2 | 1 |
| Item2 | 1 |
| Item3 | 1 |
| Item3 | 1 |
已经尝试过 FOR EACH, WITH 但没有任何结果。 我需要它,就像没有 INSERTS 和临时表等的 SELECT 一样。 还有什么选项可以制作视图。
最好的尝试是:
WITH Numbers(Number) AS (
SELECT 1
UNION ALL
SELECT Number + 1
FROM Numbers
WHERE Number <= (
SELECT
SUM(QRY1.QTY) FROM QRY1
)
)
SELECT DTBL.Code, DTBL.QTY
FROM Numbers
CROSS JOIN (
SELECT
Items as Code
, 1 as QTY
FROM QRY1
) DTBL
非常感谢!
【问题讨论】:
-
如果您以 DDL+DML 的形式提供示例数据,您可以更轻松地提供帮助。也请向我们展示您的最佳尝试。提示递归 CTE 或计数表连接。
-
使用
tally表。Raw r INNER JOIN Tally t ON t.number BETWEEN 1 AND r.QTY -
好的,非常感谢!
标签: sql sql-server tsql