Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wählen Sie Datensätze mehrmals aus der Tabelle aus

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

Wenn die 4 keine Konstante ist, sondern (wie @xQbert bemerkte/fragte) die Anzahl der Zeilen der Tabelle ist, können Sie dies verwenden:

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

Wenn Sie Table1 nicht haben aber jede (wie auch immer komplexe) Abfrage, Sie könnten dies für 4 Kopien verwenden:

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)

oder dies für n Kopien:

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