这可能听起来很奇怪,但我们使用的物理打印服务将进行SQL调用,并打印返回的行。我们需要同一物理印刷品的多个副本,因此我们必须进行100次以上的同一次通话。如果我们能以某种方式返回一个唯一的行,但在通话中相同的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
之类的东西来重复这些行。
答案 0 :(得分: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);