2014-02-14 3 views
0

Это может показаться странным, но физическая служба печати, которую мы используем, примет вызов 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, чтобы повторить строки.

ответ

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. –

Смежные вопросы