복붙노트

[SQL] 쿼리 SQL Server가 그룹의 마지막 행을 찾기

SQL

쿼리 SQL Server가 그룹의 마지막 행을 찾기

나는 SQL Server의 테이블이있다. 나는 각 그룹의 마지막 행을 찾고 싶어요. 나는 다음과 같은 쿼리를 시도하지만, 정확한 결과를 반환하지 않습니다. ID 열이 PK이며, 다른 컬럼은 NOT NULL로 설정됩니다.

select ID, Name FROM 
(select ID, Name, max(ID) over (partition by Name) as MAX_ID
from Customer) x where ID= MAX_ID

더 명확하게합니다. 나는 2 queries.First 있습니다 :

ALTER PROCEDURE [dbo].[Ramiz_Musterija_RowNum]
@Datum DATE,
@BrojKamiona INT
AS SET NOCOUNT ON
SELECT Ime,MusterijaID,RowNum=ROW_NUMBER() OVER(ORDER BY Ime)FROM Musterije
WHERE Datum=@Datum AND BrojKamiona=@BrojKamiona  GROUP BY Ime,MusterijaID

그리고 두 번째 :

ALTER PROCEDURE [dbo].[Ramiz_Musterija_FindLast]
@Datum DATE,
@BrojKamiona INT
AS SET NOCOUNT ON
SELECT a.* from Musterije a
JOIN (SELECT Ime, MAX(MusterijaID) AS MAXID FROM Musterije GROUP BY Ime) AS b 
ON a.MusterijaID = b.MAXID AND a.Datum=@Datum AND a.BrojKamiona=@BrojKamiona

그런 다음 LINQ 쿼리 :

  var rowNumList = from f in customerFindLastList
                     join r in customerRowNumList
                     on f.MusterijaID equals r.MusterijaID
                     select new { r.RowNum };

그때, 각 행에서 마지막 행을 찾을 수 MusterijaID 칼럼에서이 두 쿼리와 일치하는 것을 시도하고있다. 이에 관한 어떤 도움을 주시면 감사하겠습니다. 이는 한 그룹의 출력이다. 자, 문제는이 두 쿼리가 "4250"MusterijaID에 일치하는 것입니다,하지만 난 "4229"에 쿼리와 일치해야합니다.

Ime MusterijaID
100//1  4246
100//1  4247
100//1  4248
100//1  4249
100//1  4250
100//1  4229

해결법

  1. ==============================

    1.

    select ID, Name 
    FROM (select ID, Name, -- add other columns here
                 ROW_NUMBER() over (partition by Name ORDER BY ID DESC) as MAX_ID
          from Customer) x
    WHERE MAX_ID = 1
    
  2. from https://stackoverflow.com/questions/15571471/find-last-row-in-group-by-query-sql-server by cc-by-sa and MIT license