태만 여러 레코드에서 SQL 서버 기반 조건 및 생산하는 결과

0

질문

나는 다음과 같은 테이블에서 SQL Server:

consult_date patient_id consultation_cost
-----------------------------------------
2021-10-30    1           -10
2021-05-30    1            10
2021-02-08    1            20
2021-01-27    1            22

I 을 선택하려면 최신 consult_date 을 위한 환자 1 생성하고 알림. 여기에는 최신 consult_date 은 2021-10-30 하지만 문제는 상담이 취소되었습기 때문 상담 비용이 부정적인 여기에.

고 싶은 이것을 무시 기록뿐만 아니라 무시 consult_date2021-05-30 뿐만 아니라 이후 consultation_cost(10)유사한 부정적인 상담 비용(-10)는 취소되었습니다. 그래서 최신 상담 날짜이어야 2021-02-08.

솔루션을 찾을 최대담 날짜입니다. 는 경우 비용이 긍정적이 다음을 그로 최대담 날짜입니다. 부정적인 경우에는 다음을 무시하는 기록하고 소홀히 비슷한 비용에 긍정적인 값이 같은 환자에 기록하고 다음 최대담 날짜입니다.

common-table-expression sql sql-server
2021-11-19 09:16:07
1

최고의 응답

1

당신이 사용할 수 있는 합계를 통해 파티션[patient_id]에서 내림차순으로[consult_date]다음 찾을 최대한 날짜와 긍정적인 값입니다.

Select patient_id, Max(consult_date) As consult_date
From (
Select consult_date, patient_id, SUM(consultation_cost) Over (Partition by patient_id Order by consult_date Desc) As Agg
From Tbl) As T
Where Agg>0
Group by patient_id

출력:

patient_id  consult_date
----------- ------------
1           2021-02-08
2021-11-19 09:40:59

나는 이러한 개념을 파악할 수 있습니다. 우리는지 여부를 알 수 있는 새로운 행을 값으로 -10,5,5,-10,5,15,처리하는 방법으로 이러한 경우,그러나 당신의 솔루션을 것 같더라도 해당 이러한 특별한 시나리오.
Thorsten Kettner

@토르스로운 리 당신을 감사에 대한 긍정적인 평가입니다.
Anton Grig

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................