Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Selecione registros várias vezes da tabela

SELECT Location 
FROM Table1
  CROSS JOIN
    ( VALUES (1),(2),(3),(4)
    ) AS four(dummy)

Se o 4 não é uma constante, mas (como @xQbert notou/perguntou) é o número de linhas da tabela, você pode usar isso:
SELECT a.Location 
FROM Table1 AS a
  CROSS JOIN
     Table1 AS b

Se você não tiver Table1 mas qualquer consulta (por mais complexa que seja), você pode usar isso para 4 cópias:
SELECT Location 
FROM (
       SELECT Location       --- complex query here
       ...                   --- inside parenthesis
     UNION 
       SELECT Country
       ...
     ) AS Table1
  CROSS JOIN
    ( VALUES (1),(2),(3),(4)
    ) AS four(dummy)

ou isso para n cópias:
WITH cte AS
  ( SELECT Location       --- complex query here
    ...                   --- inside parenthesis
    UNION 
    SELECT Country
    ...
  )
SELECT a.Location 
FROM cte AS a
  CROSS JOIN
     cte AS b