본인은 현재 주문SQL Server의 각 그룹 내에서 TOP (1) 행을 얻는 방법 2000
PK_PatientId PK_PatientVisitId PK_VisitProcedureId DateSort
------------ ----------------- ------------------- -----------------------
1 4 4 2009-06-22 00:00:00.000
1 3 3 2009-06-22 00:00:00.000
1 2 2 2010-03-11 00:00:00.000
1 1 1 2010-03-11 00:00:00.000
5 6 6 2009-05-24 00:00:00.000
5 5 5 2009-11-07 00:00:00.000
7 7 7 2009-05-24 00:00:00.000
8 8 8 2009-05-24 00:00:00.000
9 9 9 2009-05-24 00:00:00.000
10 10 10 2009-05-24 00:00:00.000
쿼리를 기반으로 각 PK_PatientId에 대해 최고 1 행을 선택하려는 데이터의 일부 다음 세트가 이 결과는
SELECT
P.PK_PatientId
, PV.PK_PatientVisitId
, MAX(TVP.PK_VisitProcedureId) AS PK_VisitProcedureId
, MAX(PV.LastUpdated) AS DateSort
--, Row_Number() OVER (Partition BY PK_PatientId ORDER BY PV.PK_PatientVisitId DESC) AS RowNo
FROM
dbo.M_Patient AS P
INNER JOIN
dbo.M_PatientVisit AS PV
ON
P.PK_PatientId = PV.FK_PatientId
INNER JOIN
dbo.TX_VisitProcedure AS TVP
ON
PV.PK_PatientVisitId = TVP.FK_PatientVisitId
WHERE
(P.IsActive = 1)
AND
(PV.IsActive = 1)
AND
(TVP.IsActive = 1)
GROUP BY
PK_PatientId
, PK_PatientVisitId
ORDER BY
PK_PatientId
, PK_PatientVisitId DESC
을하고 내가 RowNo = 1 복용하여 행 번호 기능을하고 있던 나머지 기능을 얻을 수있는 것을 저를지도한다. 그러나 이제는이 기능을 사용할 수 없기 때문에이 절차를 SQL 2000으로 가져 가야합니다.
원하는 결과는 SQL 2005 년 ROW_NUMBER를 사용할 때 내가 무엇입니까
PK_PatientId PK_PatientVisitId PK_VisitProcedureId DateSort RowNo
------------ ----------------- ------------------- ----------------------- --------------------
1 4 4 2009-06-22 00:00:00.000 1
5 6 6 2009-05-24 00:00:00.000 1
7 7 7 2009-05-24 00:00:00.000 1
8 8 8 2009-05-24 00:00:00.000 1
9 9 9 2009-05-24 00:00:00.000 1
가 난 단지 SQL 2000 사용하여 같은 결과를 원하는 것입니다. "환자를 반환하는 쿼리가 발생할 것이다 ...
AND NOT EXISTS (
SELECT *
FROM dbo.M_PatientVisit PV2
WHERE P.PK_PatientId = PV2.FK_PatientId
AND PV2.PK_PatientVisitId > PV.PK_PatientVisitId
)
:
나는 당신은 당신의 WHERE 절의 끝 부분이 스트랩 필요 SQL 2000
이렇게했습니다. 나는 그것에 대해 생각하지 않았다. 나는 그룹들 사이에서 TOP (1)에 집중했다. 내가 각 환자 그룹에서 TOP (1) 행을 얻는 것을 생각할 때. 그러나 그것은 좋은 일을했습니다. –
분명히이 하위 쿼리에 포함 된 다른 모든 조건이 필요합니다. 그렇지 않으면 이후에 "활성"이 아닌 방문을 선택할 수 있습니다. –
@Damien - 게시 한 시간 전후에 해당 게시물을 편집했습니다. - 감사합니다. –