gpt4 book ai didi

sql - 取一个带有数量字段或项目计数的表,并动态地为每个字段创建唯一的行

转载 作者:行者123 更新时间:2023-12-04 23:46:59 24 4
gpt4 key购买 nike

我有一张这样的 table

 ItemsWithQuantity
=================
ID Quantity
---------------
x 4
y 7

我想构建一个 View 或查询,将其变成这样

ID
x
x
x
x
y
y
y
y
y
y
y

基本上不计算它们,并为每个数量获得一个唯一的行。

在 MS SQL 2005 或 2008 中动态执行此操作的最佳方法是什么

最佳答案

最简单的方法:

SELECT iq.ID FROM ItemsWithQuantity iq
INNER JOIN master..spt_values n ON iq.Quantity > n.number AND n.type = 'p'

SQLFiddle DEMO

这是为数字使用 master..spt_values 系统表,这是一个非常安全但仍未记录的功能。如果您不确定是否要使用它,您可以创建自己的仅列出数字的 Numbers 表,或即时创建 CTE:

WITH CTE_Numbers AS
(
SELECT MAX(Quantity) AS Number FROM dbo.ItemsWithQuantity
UNION ALL
SELECT number - 1 FROM CTE_Numbers
WHERE number >=1
)
SELECT iq.ID FROM ItemsWithQuantity iq
INNER JOIN CTE_Numbers n ON iq.Quantity > n.number
ORDER BY ID

SQLFiddle DEMO

关于sql - 取一个带有数量字段或项目计数的表,并动态地为每个字段创建唯一的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18020415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com