2014-02-14 77 views
0

这可能听起来很奇怪,但我们使用的物理打印服务将接受SQL调用并打印返回的行。我们需要同一张实体照片的多份副本,因此我们必须拨打相同的电话100多次。如果我们可以以某种方式返回一个唯一的行,但是在调用中相同的次数相同,那么这将节省大量的处理。不幸的是,我们无法通过“复印件”。如何重复或复制数据集中的唯一行?

所以select * from PendingPrints P where P.RecId = 12345678将返回:

ITEM  Serial#  Description  UnusedColumn1 UnusedColumn2 
55555 2014021434567 "Fancy Widget" 

,我们只是打这通电话100+倍。我需要以某种方式在一个调用返回:

ITEM  Serial#  Description  UnusedColumn1 UnusedColumn2 
55555 2014021434567 "Fancy Widget" 
55555 2014021434567 "Fancy Widget" 
55555 2014021434567 "Fancy Widget" 
55555 2014021434567 "Fancy Widget" 
55555 2014021434567 "Fancy Widget" 
etc...................................x100 

我有一个未使用的备用列,或者我可以只创建一个计数器我想和可能的工作。我很好奇,但如果我可以用Replicate之类的东西来重复这些行。

回答

3

您可以生成一个递归CTE(或其他方式)的数字,然后使用连接来获得你想要的东西:

with nums as (
     select 1 as n 
     union all 
     select n + 1 
     from nums 
     where n < 100 
) 
select * 
from PendingPrints P join 
    nums 
    on n.n <= 100 
where P.RecId = 12345678 
OPTION (MAXRECURSION 0); 
+2

可以添加'OPTION(MAXRECURSION 0)'在查询结束,如果你需要100多个。 –

相关问题