2014-02-14 106 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多個。 –

相關問題