Reputation: 23
I need to select only repeated records from my tables. Query executed successfully but there is no data into it.
My code:
SELECT PRACOWNK.X_I, Imie,Nazwisko, HISTORIA.X_I, HISTORIA.NrKartyRCP
FROM R2P_psou_dane_1.dbo.PRACOWNK
JOIN R2P_psou_dane_1.dbo.HISTORIA on PRACOWNK.X_I=HISTORIA.X_IPracownik
WHERE AktZatrudnienie = 1
GROUP BY PRACOWNK.X_I,Nazwisko,Imie,HISTORIA.X_I, HISTORIA.NrKartyRCP
HAVING COUNT(PRACOWNK.X_I) > 1;
Could you please help?
Upvotes: 2
Views: 74
Reputation: 77866
Since SQL Server
you can use ROW_NUMBER()
function like
SELECT * FROM (
SELECT PRACOWNK.X_I, Imie,Nazwisko, HISTORIA.X_I, HISTORIA.NrKartyRCP,
ROW_NUMBER() OVER(PARTITION BY PRACOWNK.X_I ORDER BY PRACOWNK.X_I) AS rn
FROM R2P_psou_dane_1.dbo.PRACOWNK
JOIN R2P_psou_dane_1.dbo.HISTORIA on PRACOWNK.X_I=HISTORIA.X_IPracownik
WHERE AktZatrudnienie = 1 ) xxx
WHERE rn = 1;
Upvotes: 1
Reputation: 336
Take all data and put into a temporary table.
SELECT PRACOWNK.X_I, Imie,Nazwisko, HISTORIA.X_I, HISTORIA.NrKartyRCP
INTO #temp
FROM R2P_psou_dane_1.dbo.PRACOWNK
JOIN R2P_psou_dane_1.dbo.HISTORIA on PRACOWNK.X_I=HISTORIA.X_IPracownik
WHERE AktZatrudnienie = 1
Then check the having condition
SELECT * FROM #temp
group by PRACOWNK.X_I, Imie,Nazwisko, HISTORIA.X_I, HISTORIA.NrKartyRCP
HAVING COUNT(PRACOWNK.X_I) > 1;
Upvotes: 0
Reputation: 5110
If you want to get records based on count of PRACOWNK.X_I then remove this column from select and Group by.
SELECT Imie,Nazwisko, HISTORIA.X_I, HISTORIA.NrKartyRCP
FROM R2P_psou_dane_1.dbo.PRACOWNK
JOIN R2P_psou_dane_1.dbo.HISTORIA on PRACOWNK.X_I=HISTORIA.X_IPracownik
WHERE AktZatrudnienie = 1
GROUP BY Nazwisko,Imie,HISTORIA.X_I, HISTORIA.NrKartyRCP
HAVING COUNT(PRACOWNK.X_I) > 1;
Upvotes: 0