当前位置: 代码迷 >> Sql Server >> 怎么用SQL语句完成五行为一组数据的划分
  详细解决方案

怎么用SQL语句完成五行为一组数据的划分

热度:47   发布时间:2016-04-24 09:06:11.0
如何用SQL语句完成五行为一组数据的划分?
在数据表tb1里,字段data有20万行数据,例如

12
23
34
33
44
321
456
444
778
787
456
12365
.AA
DD
GG
HH
JKL
.....

如何用SQL语句完成五行为一组数据的划分?就是五行加一行空的,以此类推,谢谢指教

12
23
34
33
44

321
456
444
778
787

456
12365
.AA
DD
GG

HH
JKL
.....


------解决思路----------------------
这个确实应该在显示的时候去处理,我想不出有哪不方便

;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 行受影响)



  相关解决方案