有表T1 数据如下
A B
中国人 5
美国人 3
日本人 2 查询结果如下:
A B
中国人 5
中国人 5
中国人 5
中国人 5
中国人 5
美国人 3
美国人 3
美国人 3
日本人 2
日本人 2
请给出上面查询结果的sql语句(注:要求用静态和动态sql语句解决)
有表T1 数据如下
A B
中国人 5
美国人 3
日本人 2 查询结果如下:
A B
中国人 5
中国人 5
中国人 5
中国人 5
中国人 5
美国人 3
美国人 3
美国人 3
日本人 2
日本人 2
请给出上面查询结果的sql语句(注:要求用静态和动态sql语句解决)
先在查询分析器中执行下面的代码,生成一个存储过程
create proc GetSql
as
declare @i int
declare @A char(10)
declare @B int
--创建一个临时表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[#T1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[#T1]
CREATE TABLE [dbo].[#T1] (
[A] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[B] [int]
) ON [PRIMARY]
--创建游标
declare Cur_Grade cursor scroll
FOR
SELECT A,B FROM T1
open Cur_Grade
fetch next from Cur_Grade into @A,@B
WHILE @@FETCH_STATUS = 0
begin
--组合所要的数据
set @i=1
while (@i<=@B)
begin
insert into #T1(A,B) values (@A,@B)
set @i=@i+1
end
--游标循环
fetch next from Cur_Grade into @A,@B
end
--关闭游标
close cur_grade
deallocate cur_Grade
--得到所要的值
select A,B from #T1
再利用查询分析器,输入GetSql,即可以得到你要的结果