Sql 按订单数量显示行
我有下表Sql 按订单数量显示行,sql,oracle,Sql,Oracle,我有下表 NAME quantity a 5 b 3 c 2 我需要编写一些oracle sql only查询,它将输出以下内容: NAME quantity a 1 a 1 a 1 a 1 a 1 b 1 b 1 b 1 c 1 c
NAME quantity
a 5
b 3
c 2
我需要编写一些oracle sql only查询,它将输出以下内容:
NAME quantity
a 1
a 1
a 1
a 1
a 1
b 1
b 1
b 1
c 1
c 1
CTO查询提供网格行1到最大数量。使用它连接到您的表以限制数量。好吧,我不是一个Oracle人员,但我发现这个问题很有趣。我相当喜欢PostgreSQL。如果您知道Oracle相当于PostgreSQL的generate_series函数,那么解决方案可能如下所示:
SELECT
X.name,
1
FROM (
SELECT
T.name,
generate_series(1, T.quantity)
FROM
unnest(ARRAY[('a'::char, 5), ('b'::char, 3), ('c'::char, 2)]) AS T(name char(1), quantity integer)
) AS X;
最不必要的部分就是模拟原始数据表
也许这可以帮助您找到答案。那么您想将每个名称的数量分解为1的值吗?是的,您的理解是正确的!所以一般来说,这是一件非常奇怪的事情。这个查询的目的是什么?只是在控制台上打印东西吗?如果要将数据传递回应用程序,则将每个名称分开的逻辑将在应用程序中。那么,你能详细说明一下你想这样做的原因吗?这只是自我测试!我不太懂自我测试。如果您只是在打印,您可能可以使用一些游标逻辑来循环行。您是否也可以帮助在ms sql中编写此查询?@Arzu,相当于级别连接。。看见
SELECT
X.name,
1
FROM (
SELECT
T.name,
generate_series(1, T.quantity)
FROM
unnest(ARRAY[('a'::char, 5), ('b'::char, 3), ('c'::char, 2)]) AS T(name char(1), quantity integer)
) AS X;