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;