Dies kann in einer kompakteren Form geschrieben werden, sondern nur für Klarheit:
With Src As ( --< Source table
Select * From (Values (1),(2),(3),(1),(1),(2),(3),(3),(4),(4),(5)) V (Id)
), Numbers As ( --< Auxiliary table with numbers from 1 to maximum row count of Src
Select ROW_NUMBER() Over (Order By Id) As N From Src
), Counted As ( --< Calculate current number of ID occurances
Select Id, Count(Id) As Cnt From Src Group By Id
)
Select Id
From Counted --< From distinct list of IDs
Inner Join Numbers --< replicate each row
On Numbers.N < Counted.Cnt --< one less time than the Cnt
Expression die Zeile aus SQL: Repeat a result row multiple times...
jpw Implementierung (Sie fühlen sich frei genommen zu replizieren um es in Ihre eigene Antwort zu kopieren):
With Src As ( --< Source table
Select * From (Values (1),(2),(3),(1),(1),(2),(3),(3),(4),(4),(5)) V (Id)
), Numbered As ( --< Number ID occurances
Select Id, row_number() Over (Partition By id Order By id) As n From Src
)
Select Id From Numbered Where n > 1 --< Take one off
was hast du bisher probiert? – Sankar
Sind Sie sicher, dass die Ausgabe doppelte Werte enthalten kann? Wenn ja - wie lautet die Regel? –
im Eingang habe ich 3 mal 1, 2 mal 2, 3 mal 3 und 2 mal 4. Ausgabe ich will 2 mal 1, 1 mal 2, 2 mal 3 und 1 mal 4 .. –