Sql 填充带编号的行,直到使用另一列达到特定值
我有一张满是账号和贷款期限的表格,期限以月为单位 我需要做的是为每个小于或等于贷款期限的帐号填充一个编号行。我在下面附上了一个屏幕截图: 因此,对于这个特定的例子,我需要48个编号行作为这个帐号,因为期限只有48个月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中运行良好。非常感谢你
谢谢你的帮助 你的数据库版本是什么?例如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
;