[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.
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
from https://stackoverflow.com/questions/15571471/find-last-row-in-group-by-query-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server 데이터베이스의 모든 테이블에 대한 행 수를 가져 오기 위해 [중복] (0) | 2020.04.08 |
---|---|
[SQL] SQL 서버 쿼리는 데이터 유형, NOT NULL 및 PRIMARY KEY 제약 조건과 함께 테이블에 열 목록을 얻을 수 있습니다 (0) | 2020.04.08 |
[SQL] 시간을 줄이기 위해 선택 MySQL을 다시 쓰기 디스크에 TMP를 작성 (0) | 2020.04.08 |
[SQL] mysql_num_rows도 () : 제공된 인수가 유효한 MySQL의 결과 리소스 아니다 [중복] (0) | 2020.04.08 |
[SQL] SQL Server의 N 행을 선택 (0) | 2020.04.08 |