可以说我在MS SQL 2000中有下表
Id | description | quantity |
-------------------------------
1 my desc 3
2 desc 2 2
Run Code Online (Sandbox Code Playgroud)
我需要根据数量显示多行,所以我需要以下输出:
Id | description | quantity |
-----------------------------
1 my desc 1
1 my desc 1
1 my desc 1
2 desc 2 1
2 desc 2 1
Run Code Online (Sandbox Code Playgroud)
任何想法如何实现这一目标?
这工作得很好,不需要任何光标。没有数字表也可以解决一些问题。
请注意,如果采用这种解决方案,我会保留一个数字表,而不是每次运行查询时都重新创建它。
create table #splitme (Id int, description varchar(255), quantity int)
insert #splitme values (1 ,'my desc', 3)
insert #splitme values (2 ,'desc 2', 2)
create table #numbers (num int identity primary key)
declare @i int
select @i = max(quantity) from #splitme
while @i > 0
begin
insert #numbers default values
set @i = @i - 1
end
select Id, description, 1 from #splitme
join #numbers on num <= quantity
Run Code Online (Sandbox Code Playgroud)