是否有一种简单,简洁的方法来选择基于变量中保存的计数重复的同一组行,而不使用循环?
例如,假设SELECT a, b, c FROM foo WHERE whatsit = something
返回
a b c --- --- ---- 1 2 3
...我的@count
里面有3
。有没有循环的合理方法:
a b c --- --- ---- 1 2 3 1 2 3 1 2 3
?订单并不重要,我也不需要知道任何给定行属于哪个组。我实际上只需要这一行(如上所述),并且只适用于一行的解决方案可以解决这个问题,但我认为如果我们可以为一个行完成,我们可以为任何数字执行此操作。
答案 0 :(得分:5)
尝试使用Recursive CTE
WITH cte
AS (SELECT 1 AS id,a,b,c
FROM tablename
UNION ALL
SELECT id + 1,a,b,c
FROM cte
WHERE id < 3) --@count
SELECT a,b,c
FROM cte
答案 1 :(得分:0)
使用cross join
SELECT a, b, c
FROM Table1
CROSS JOIN (SELECT number
FROM master.dbo.spt_values
WHERE type = 'P'
AND number BETWEEN 1 AND 3) T
答案 2 :(得分:-2)
如果没有循环或动态SQL,我不知道如何做到这一点。我认为工会就是我能提出的所有工作
select q1.a,q1.b,q1.c
from (
SELECT a, b, c FROM foo
union all
SELECT a, b, c FROM foo
union all
SELECT a, b, c FROM foo ) q1
order by q1.a