sql读取n行数并以固定列数显示

sql读取n行数并以固定列数显示,sql,pivot,Sql,Pivot,我们目前正在使用SQL2005。我有一个SQL表,它在一列中存储序列号。因此,10000个序列号意味着10000行。当这些信息打印在发票上时,由于信息的存储方式,每行打印一个序列号。我们目前在我们的ERP系统中使用内置发票,但如果我能对序列的打印进行排序,我们将改为SSRS 如何读取序列号并将其显示(在视图或sp中)每行可能10次。因此,如果我正在阅读18个系列,它将是两行(第一行有10个系列,第二行有8个系列)。如果我在读53部连续剧,那将是6行。正确处理这一问题将使发票打印所需的纸张减少到目

我们目前正在使用SQL2005。我有一个SQL表,它在一列中存储序列号。因此,10000个序列号意味着10000行。当这些信息打印在发票上时,由于信息的存储方式,每行打印一个序列号。我们目前在我们的ERP系统中使用内置发票,但如果我能对序列的打印进行排序,我们将改为SSRS

如何读取序列号并将其显示(在视图或sp中)每行可能10次。因此,如果我正在阅读18个系列,它将是两行(第一行有10个系列,第二行有8个系列)。如果我在读53部连续剧,那将是6行。正确处理这一问题将使发票打印所需的纸张减少到目前所需纸张的十分之一左右

需要明确的是…序列当前存储和打印方式如下:

Ser1  
Ser2  
Ser3  
Ser4  
Ser5  
Ser1 Ser2 Ser3 Ser4 Ser5 Ser6 Ser7 Ser8 Ser9 Ser10  
Ser11 Ser12 Ser13 Ser14 Ser15 Ser16....etc
我更希望他们像这样打印:

Ser1  
Ser2  
Ser3  
Ser4  
Ser5  
Ser1 Ser2 Ser3 Ser4 Ser5 Ser6 Ser7 Ser8 Ser9 Ser10  
Ser11 Ser12 Ser13 Ser14 Ser15 Ser16....etc

谢谢

您可以使用
行编号()
为每一行指定一个唯一的编号。这允许您按rn/10对组进行
分组,从而为您提供10行的分组

下面是3行而不是10行的示例:

select  max(case when rn % 3 = 0 then serialno end) as sn1
,       max(case when rn % 3 = 1 then serialno end) as sn2
,       max(case when rn % 3 = 2 then serialno end) as sn3
from    (
        select  row_number() over (order by serialno) -1 as rn
        ,       serialno
        from    @t
        ) as SubQueryAlias
group by
        rn / 3

几年前,当我不得不做类似的事情时,我使用了一个。将处理过程分解到C#/VB,使事情无止境地加快了。更改获得不同结果所需的程序和参数(例如,一行中的项目数、添加逗号等)也更容易。非常感谢!我已经连续修改了10个序列号,效果非常好。这是一个看似复杂问题的简单解决方案…再次感谢!