Sql 填充带编号的行,直到使用另一列达到特定值

Sql 填充带编号的行,直到使用另一列达到特定值,sql,database,oracle,Sql,Database,Oracle,我有一张满是账号和贷款期限的表格,期限以月为单位 我需要做的是为每个小于或等于贷款期限的帐号填充一个编号行。我在下面附上了一个屏幕截图: 因此,对于这个特定的例子,我需要48个编号行作为这个帐号,因为期限只有48个月 谢谢你的帮助 你的数据库版本是什么?例如12.1.0.2.0,如果您不确定,请从v$version中选择*。不同版本的数据库中有不同的答案。请发布格式化文本。Oracle版本:11g Enterprise Edition 11.2.0.3版。第二个查询在11g中运行良好。非常感谢你

我有一张满是账号和贷款期限的表格,期限以月为单位

我需要做的是为每个小于或等于贷款期限的帐号填充一个编号行。我在下面附上了一个屏幕截图:

因此,对于这个特定的例子,我需要48个编号行作为这个帐号,因为期限只有48个月


谢谢你的帮助

你的数据库版本是什么?例如12.1.0.2.0,如果您不确定,请从v$version中选择*。不同版本的数据库中有不同的答案。请发布格式化文本。Oracle版本:11g Enterprise Edition 11.2.0.3版。第二个查询在11g中运行良好。非常感谢你@你是说第一个查询在11g中工作吗?如果第二个查询确实有效,那将是非常令人惊讶的,因为只有在Oracle 12.1中才引入或至少记录了横向查询。横向查询在我正在运行的11g数据库中有效。我甚至运行select*fromv$version来确认版本。再次感谢你的帮助。
with
     test_data ( account_nmbr, term ) as (
       select 'ABC200', 6 from dual union all
       select 'DEF100', 8 from dual
     )
-- End of simulated inputs (for testing purposes only, not part of the solution).
-- SQL query begins BELOW THIS LINE.
select     level as row_nmbr, term, account_nmbr
from       test_data
connect by level <= term
       and prior account_nmbr = account_nmbr
       and prior sys_guid() is not null
order by   account_nmbr, row_nmbr   --   If needed
;

  ROW_NMBR        TERM  ACCOUNT_NMBR
  --------  ----------  ------------
         1           6  ABC200
         2           6  ABC200
         3           6  ABC200
         4           6  ABC200
         5           6  ABC200
         6           6  ABC200
         1           8  DEF100
         2           8  DEF100
         3           8  DEF100
         4           8  DEF100
         5           8  DEF100
         6           8  DEF100
         7           8  DEF100
         8           8  DEF100
with
     test_data ( account_nmbr, term ) as (
       select 'ABC200', 6 from dual union all
       select 'DEF100', 8 from dual
     )
-- End of simulated inputs (for testing purposes only, not part of the solution).
-- SQL query begins BELOW THIS LINE.
select   l.row_nmbr, t.term, t.account_nmbr
from     test_data t,
         lateral (select level as row_nmbr from dual connect by level <= term) l
order by account_nmbr, row_nmbr   --  If needed
;