SQL Server 2008:将n行的分数连接在一起

时间:2014-03-03 12:50:26

标签: sql sql-server sql-server-2008 row concatenation

我的表格如下:

column 1 | column 2
--------------------
   A         L
   B         M
   C         N
   D         O
   E         P
   F         Q
   G         R
   H         S
   I         T
   J         U
   K         V

现在我想"连接" n行的分数(n是可变的)在一起。

例如:

- )如果n = 4,输出应为:

column 1 | column 2 | column 1 | column 2 | column 1 | column 2
   A          L          E          P          I          T
   B          M          F          Q          J          U
   C          N          G          R          K          V
   D          O          H          S

- )如果n = 10,输出应为:

column 1 | column 2 | column 1 | column 2
   A          L          K          V
   B          M
   C          N
   D          O
   E          P
   F          Q
   G          R
   H          S
   I          T
   J          U

我想过使用临时表和循环。在每次迭代之后,我选择n行的分数并将它们连接在一起(使用union)。但是,我认为这个解决方案对于大型数据集来说可能有点慢。

也许有人认识一种更好的方法?

如果有人能帮助我,我真的很感激。

亲切的问候

Bernhard

1 个答案:

答案 0 :(得分:0)

这不完整

枢轴离开,我正在考虑做这样的事情,

Declare @n int=4
Declare @j int
Declare @k int
Select  @j=count(*) from #t
if(@j%@n=0)
set @k= (@j/@n)
else
set @k= (@j/@n)+1
--select @k
;with CTE as
( 
select *,ntile(@k)over(order by column1)rn from #t
)
select * from cte