2013-03-22 4 views
0

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

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

더 명확해야합니다.

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 [email protected] AND [email protected] 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 [email protected] AND [email protected] 

그런 다음 LINQ 쿼리 :

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

나는 각 행에서 마지막 행을 찾기 위해 노력하고,이 일치 나는 2 queries.First이 MusterijaID 열에 2 개의 쿼리. 이 문제에 대한 도움을 주시면 감사하겠습니다. 하나의 그룹 출력입니다. 이제 문제는이 두 쿼리가 "4250"MusterijaID에서 일치하지만 "4229"에서 쿼리를 일치시켜야한다는 것입니다.

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

모호한에 ** **입니다 방법을 "* *이 정확한 결과를 반환하지 않습니다." 좀 더 구체적이어야합니다. 몇 가지 샘플 데이터와 얻은 것을 보여주십시오. 아니면 더 나은 예제를 작성하십시오 : http://sqlfiddle.com –

+0

"마지막 행"은 가장 큰'id'를 가진 것을 의미한다고 가정하면 쿼리는 정확 해 보입니다. –

답변

5
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

이것이 OP의 쿼리와 다른 결과를 반환하는 이유는 무엇입니까? –

+0

@a_horse_with_no_name 예, 맞습니다. –

+0

@JW. 나는 나의 질문을 편집했다 –

관련 문제