Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Sélectionnez des enregistrements plusieurs fois dans le tableau

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

Si le 4 n'est pas une constante mais (comme @xQbert l'a remarqué/demandé) est le nombre de lignes du tableau, vous pouvez utiliser ceci :

SELECT a.Location 
FROM Table1 AS a
  CROSS JOIN
     Table1 AS b

Si vous n'avez pas Table1 mais n'importe quelle requête (aussi complexe soit-elle), vous pouvez l'utiliser pour 4 copies :

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 ceci pour n exemplaires :

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