2016-10-10 15 views
-1

Ich habe eine Tabelle, in der ich EMPID Spalte habe. In dieser Tabelle habe ich mehrere Zeilen mit gleichem EMPID. Jetzt möchte ich die letzte Reihe von verschiedenen EmpIDs bekommen. Nachfolgend finden Sie die Tabellendaten. Und ich möchte Ergebnis der Zeile mit ID 3,5 und 7 mit allen Spalten.Finde den letzten Datensatz von distinct nach EmpID in sql

enter image description here

Ich möchte, wie unten zur Folge haben:

enter image description here

ich mit folgenden Abfrage versuchen aber funktioniert nicht.

SELECT ID, 
     EmpID, 
     Salary, 
     Leave, 
     TakenLeave, 
     field1, 
     field2, 
     field3 
FROM Table_2 
GROUP BY ID, 
      EmpID, 
      Salary, 
      Leave, 
      TakenLeave, 
      field1, 
      field2, 
      field3 
+0

'select * from (select row_number() über (Partition durch EmpID ....) als rn * ab ..) ein, wo rn = 1 ' –

+0

bitte erwartetes Ergebnis als Text schreiben – TheGameiswar

+0

Auch nach der über Guy kommentieren, um das erwartete Ergebnis im Textformat zu posten Sie haben es als Bild gepostet .. -1 –

Antwort

1

Geben Sie eine Zeile_number Partition von EmpId und Reihenfolge nach Id desc.

Abfrage

;with cte as(
    select rn = row_number() over(
     partition by EmpId 
     order by Id desc 
    ), * 
    from [your_table_name] 
) 
select ID, EmpID, Salary, Leave, TakenLeave, field1, field2, field3 from cte 
where rn = 1; 
+0

Thnak Ullas für Ihre Antwort und es funktioniert gut. – Hitesh

0
select * from myTable 
where id in 
(
    select max(id) from myTable group by empId 
); 

Inner SQL wählt max (id) pro EmpID und äußeren select wählt die Zeilen jene Ids aufweist.

4
SELECT 
TOP 1 WITH TIES 
ID, EmpID, Salary, Leave, TakenLeave, field1, field2, field3 
FROM [TABLE_NAME] 
ORDER BY ROW_NUMBER() OVER(PARTITION BY EmpId ORDER BY Id DESC) 
+0

Thnak Tanjim für Ihre Antwort und es funktioniert gut. – Hitesh

+0

Kredit geht an @Prdp, er war der Mentor .. – Esty

+0

@TanjimRahman - ha danke;). Ich habe es vom großen Gordan gelernt –

1

Sie können diesen Code verwenden;

select ID, EmpID, Salary, Leave, TakenLeave, field1, field2, field3 
    from (select ID, 
       EmpID, 
       Salary, 
       Leave, 
       TakenLeave, 
       field1, 
       field2, 
       field3 row_number() over(partition by EmpID order by id desc) as que 
      from table_2) 
where que = 1 
Verwandte Themen