当前位置: 代码迷 >> Sql Server >> 依据某行R的Y列上的数字值X,形成一个新表,新表包含X行R
  详细解决方案

依据某行R的Y列上的数字值X,形成一个新表,新表包含X行R

热度:90   发布时间:2016-04-24 09:03:26.0
根据某行R的Y列上的数字值X,形成一个新表,新表包含X行R
比如有一个表A,记录如下:

最终形成的结果为:

不知道有没有方法转换成这样,那个值为int类型的,SQL脚本如下:
CREATE TABLE [dbo].[CTable](
[CName] [varchar](50) NULL,
[CNum] [int] NULL
) ON [PRIMARY]

GO

insert into CTable VALUES('S19',3)
insert into CTable VALUES('S18',2)
insert into CTable VALUES('S17',2)
insert into CTable VALUES('S16',1)

------解决思路----------------------
SELECT T1.*
FROM CTable T1
JOIN master..spt_values T2 ON T1.CNum>T2.number
WHERE T2.type='P'

------解决思路----------------------
declare @tb_T table
(
    [CName] [varchar](10) NULL,
    [CNum] [int] NULL
); 

insert into @tb_T VALUES('S19',3)
insert into @tb_T VALUES('S18',2)
insert into @tb_T VALUES('S17',2)
insert into @tb_T VALUES('S16',1)

select t.[CName] from @tb_T t 
inner join master..spt_values s on s.type ='L' and s.number < t.CNum
/*
CName
----------
S19
S19
S19
S18
S18
S17
S17
S16
*/
  相关解决方案