22,209
社区成员
发帖
与我相关
我的任务
分享
12
23
34
33
44
321
456
444
778
787
456
12365
.AA
DD
GG
HH
JKL
.....
12
23
34
33
44
321
456
444
778
787
456
12365
.AA
DD
GG
HH
JKL
.....
-- 这个需求,很是奇怪
-- 来的早,给你写一个。
create table test(name varchar(10))
go
insert into test values
('12'),
('23'),
('34'),
('33'),
('44'),
('321'),
('456'),
('444'),
('778'),
('787'),
('456'),
('12365'),
('.AA'),
('DD'),
('GG'),
('HH'),
('JKL')
go
--select * from test
go
with m as
(
select ROW_NUMBER() over(order by getdate()) rn , * from test
) ,
x as (select 1 rn union all select 2 )
select case x.rn when 1 then m.name else '' end
from m , x where x.rn = 1 or x.rn = 2 and m.rn % 5 = 0
go
drop table test
go
(17 行受影响)
----------
12
23
34
33
44
321
456
444
778
787
456
12365
.AA
DD
GG
HH
JKL
(20 行受影响)
;WITH CTE AS(
SELECT ROW_NUMBER()OVER(ORDER BY GETDATE())RN
,*
FROM
/*(--反注释该句,可以开启模拟数据
SELECT'12' COL
UNION ALL SELECT'23'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
)--*/
TB
)
SELECT ISNULL(LTRIM(T2.COL),'')
FROM master..spt_values T1
LEFT JOIN CTE T2 ON T1.number=T2.RN+(T2.RN-1)/5-1
WHERE T1.type='P' AND T1.number<=(SELECT MAX(RN+(RN-1)/5-1)FROM CTE)
-- 加一个 order by 语句就 OK 了。
--
if object_id('tempdb..#tb1','U') is not null drop table #tb1
go
create table #tb1(name varchar(14)) --select * from #tb1
go
insert into #tb1 --select SUBSTRING(notext,1,14) from DLTou..[DLT15054]
SELECT'12'
UNION ALL SELECT'23'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
create table test(name varchar(14))
go
insert into test
select * from #tb1
go
--select * from test
go
with m as
(
select ROW_NUMBER() over(order by getdate()) rn , * from test
) ,
x as (select 1 rn union all select 2 )
select case x.rn when 1 then m.name else '' end , m.rn , x.rn
from m , x where x.rn = 1 or x.rn = 2 and m.rn % 5 = 0
order by m.rn , x.rn -- 加上这句就可以了
go
drop table test
go
(107 行受影响)
(107 行受影响)
rn rn
-------------- -------------------- -----------
12 1 1
23 2 1
34 3 1
33 4 1
44 5 1
5 2
321 6 1
456 7 1
444 8 1
778 9 1
787 10 1
10 2
456 11 1
12365 12 1
.AA 13 1
DD 14 1
GG 15 1
15 2
HH 16 1
JKL 17 1
34 18 1
33 19 1
44 20 1
20 2
321 21 1
456 22 1
444 23 1
778 24 1
787 25 1
25 2
456 26 1
12365 27 1
.AA 28 1
DD 29 1
GG 30 1
30 2
HH 31 1
JKL 32 1
34 33 1
33 34 1
44 35 1
35 2
321 36 1
456 37 1
444 38 1
778 39 1
787 40 1
40 2
456 41 1
12365 42 1
.AA 43 1
DD 44 1
GG 45 1
45 2
HH 46 1
JKL 47 1
34 48 1
33 49 1
44 50 1
50 2
321 51 1
456 52 1
444 53 1
778 54 1
787 55 1
55 2
456 56 1
12365 57 1
.AA 58 1
DD 59 1
GG 60 1
60 2
HH 61 1
JKL 62 1
34 63 1
33 64 1
44 65 1
65 2
321 66 1
456 67 1
444 68 1
778 69 1
787 70 1
70 2
456 71 1
12365 72 1
.AA 73 1
DD 74 1
GG 75 1
75 2
HH 76 1
JKL 77 1
34 78 1
33 79 1
44 80 1
80 2
321 81 1
456 82 1
444 83 1
778 84 1
787 85 1
85 2
456 86 1
12365 87 1
.AA 88 1
DD 89 1
GG 90 1
90 2
HH 91 1
JKL 92 1
34 93 1
33 94 1
44 95 1
95 2
321 96 1
456 97 1
444 98 1
778 99 1
787 100 1
100 2
456 101 1
12365 102 1
.AA 103 1
DD 104 1
GG 105 1
105 2
HH 106 1
JKL 107 1
(128 行受影响)
if object_id('tempdb..#tb1','U') is not null drop table #tb1
go
create table #tb1(name varchar(14)) --select * from #tb1
go
insert into #tb1 --select SUBSTRING(notext,1,14) from DLTou..[DLT15054]
SELECT'12'
UNION ALL SELECT'23'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
UNION ALL SELECT'34'
UNION ALL SELECT'33'
UNION ALL SELECT'44'
UNION ALL SELECT'321'
UNION ALL SELECT'456'
UNION ALL SELECT'444'
UNION ALL SELECT'778'
UNION ALL SELECT'787'
UNION ALL SELECT'456'
UNION ALL SELECT'12365'
UNION ALL SELECT'.AA'
UNION ALL SELECT'DD'
UNION ALL SELECT'GG'
UNION ALL SELECT'HH'
UNION ALL SELECT'JKL'
create table test(name varchar(14))
go
insert into test
select * from #tb1
go
--select * from test
go
with m as
(
select ROW_NUMBER() over(order by getdate()) rn , * from test
) ,
x as (select 1 rn union all select 2 )
select case x.rn when 1 then m.name else '' end
from m , x where x.rn = 1 or x.rn = 2 and m.rn % 5 = 0
go
drop table test
go