[英]Split a row into multiple rows based on a column value SQL
我有以下“訂單表”:
Item Quantity
pencil 2
pen 1
Notebook 4
我需要這樣的結果:
Item Quantity
pencil 1
pencil 1
pen 1
Notebook 1
Notebook 1
Notebook 1
Notebook 1
您沒有指定要使用的RDBMS,因此如何生成數字將取決於此(可能是SQL Server的遞歸CTE,Oracle的DUAL等)。 我只編寫了代碼來處理您顯示的數據,但是顯然在最終解決方案中您需要考慮大於四的數字。
SELECT
MT.sr_no,
MT.item_name,
1 AS quantity
FROM
My_Table MT
INNER JOIN
(
SELECT 1 AS nbr UNION ALL SELECT 2 AS nbr UNION ALL
SELECT 3 AS nbr UNION ALL SELECT 4 AS nbr
) N ON N.nbr <= MT.quantity
您可以使用公共表表達式使用遞歸查詢,根據數量字段生成數量重復的行,如下所示
WITH cte (sno,item,quantity,rnum)
AS
(
SELECT sno,item,quantity, 1 as rnum
FROM [Order]
UNION ALL
SELECT cte.sno,cte.item,cte.quantity, rnum+1
FROM [Order] JOIN cte ON [Order].sno = cte.sno
AND cte.rnum < [Order].quantity
)
SELECT item,1 AS Quantity
FROM cte
ORDER BY sno
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.