NULL을 제외한 각 그룹의 첫 번째 행만 표시

아이칸 야싯

환자 테이블이 있습니다. 환자는 독신이거나 기혼 일 수 있습니다. 모든 환자를 알파벳순으로 나열하고 싶지만 부부의 경우 여성 환자 만 표시하고 싶습니다 (남편 무시).
여러 명의 환자가 동일한 CaseNo를 가지고 있다면 부부라고 생각합니다.
성별 : 0은 여성, 1은 남성입니다.

PatientID  CaseNo  Gender  Name
1          1       1       Mike
2          NULL    0       Pamela
3          2       0       Mary
4          2       1       John
5          NULL    1       Dave

예상 출력은 다음과 같습니다.

PatientID  CaseNo  Gender  Name
5          NULL    1       Dave
3          2       0       Mary
1          1       1       Mike
2          NULL    0       Pamela

John은 그의 아내가 목록에 있기 때문에 제외됩니다.

이 질문에 대한 답변 중 하나를 시도했지만 CaseNo가 NULL 인 레코드는 제외됩니다.

WITH cte 
     AS (SELECT PatientID, 
                CaseNo, 
                Gender, 
                Name, 
                Row_number() 
                  OVER ( 
                    partition BY CaseNo
                    ORDER BY Gender DESC) rn 
         FROM Patients) 
SELECT PatientID, 
       CaseNo, 
       Gender, 
       Name

FROM   cte 
WHERE  rn = 1 
ORDER BY Name

이것을 달성 할 수 있습니까?

페텀

이 방법으로 시도 할 수 있습니다.

SELECT PatientID, CaseNo, Gender, Name
  FROM 
(
  SELECT PatientID, CaseNo, Gender, Name, 
         ROW_NUMBER() OVER (PARTITION BY CaseNo ORDER BY Gender) rnum,
         COUNT(*) OVER (PARTITION BY CaseNo) rcnt
    FROM Patients
) q
 WHERE CaseNo IS NULL 
    OR rcnt = 1
    OR (rcnt > 1 AND rnum = 1)
 ORDER  BY Name

산출:

| 환자 | CASENO | 성별 | 이름 | 
| ----------- | -------- | -------- | -------- | 
| 5 | (null) | 1 | Dave | 
| 3 | 2 | 0 | Mary | 
| 1 | 1 | 1 | 마이크 | 
| 2 | (null) | 0 | 파멜라 |

다음은 SQLFiddle 데모입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

각도 UI 그리드 그룹화 그룹 행의 첫 번째 요소 표시

분류에서Dev

Postgresql : 그룹의 첫 번째 행 표시

분류에서Dev

LEFT JOIN은 첫 번째 테이블의 첫 번째 행을 한 번만 표시합니다.

분류에서Dev

각 그룹의 첫 번째 행을 얻습니다.

분류에서Dev

첫 번째 행을 제외하고 동일한 첫 번째 행이있는 행 그룹 삭제

분류에서Dev

Oracle SQL-각각의 첫 번째 항목 만 표시하면서 유사한 행의 합계 합계

분류에서Dev

Oracle SQL-각각의 첫 번째 항목 만 표시하면서 유사한 행의 합계 합계

분류에서Dev

쉘 스크립트를 사용하여 각 행의 첫 번째 쉼표를 제외한 모든 쉼표 제거

분류에서Dev

두 번째 필드를 기준으로 정렬 한 다음 첫 번째 열이 동일한 행을 다시 정렬하지만 각 그룹에 대해 두 번째 필드의 순서는 유지합니다.

분류에서Dev

UITableView의 첫 번째 행만 표시

분류에서Dev

그룹에서 첫 번째 행 제외

분류에서Dev

간단한 HTML DOM 파서. 테이블의 첫 번째 행을 제거한 다음 각 행의 두 번째 열을 제거하십시오.

분류에서Dev

Apache Spark flattern을 사용하면 Java로 각 그룹의 첫 번째 행 2 개

분류에서Dev

각 그룹 SQL에 대한 첫 번째 행 가져 오기

분류에서Dev

그룹의 첫 번째 인스턴스가 표시된 후 그룹 헤더의 내용을 억제합니다.

분류에서Dev

Oracle-각 제품의 첫 번째 행만 반환

분류에서Dev

열의 각 값에 대해 첫 번째 행만 복제

분류에서Dev

표의 첫 번째 행을 제외한 모든 행에 대한 마우스 오버 효과

분류에서Dev

각 그룹의 행을 첫 번째 행 값으로 바꿉니다. 팬더 그룹 비

분류에서Dev

5 개 세트의 값을 그룹화 한 다음 각 그룹의 첫 번째 값을 반환합니다.

분류에서Dev

SQL 제한이 첫 번째 행을 표시하지

분류에서Dev

도시 이름으로 그룹화하고 첫 번째 행에 동일한 도시 이름 만 표시

분류에서Dev

각 행의 첫 번째 값을 제외한 각 행의 평균을 계산하려면 어떻게해야합니까?

분류에서Dev

각 배열의 첫 번째 및 세 번째 값 표시

분류에서Dev

첫 번째 행을 제외한 모든 워크 시트에 Application.ScreenUpdating 적용

분류에서Dev

MVC, foreach 루프의 각 다른 이름에 대한 첫 번째 항목 만 표시

분류에서Dev

각 그룹 R에서 마지막 / 첫 번째 행 삭제 / 제거

분류에서Dev

그룹별로 각 행의 날짜 이후 조건을 충족하는 첫 번째 행 찾기

분류에서Dev

pandas 데이터 프레임은 각 그룹의 첫 번째 행과 마지막 행을 비교합니다.

Related 관련 기사

  1. 1

    각도 UI 그리드 그룹화 그룹 행의 첫 번째 요소 표시

  2. 2

    Postgresql : 그룹의 첫 번째 행 표시

  3. 3

    LEFT JOIN은 첫 번째 테이블의 첫 번째 행을 한 번만 표시합니다.

  4. 4

    각 그룹의 첫 번째 행을 얻습니다.

  5. 5

    첫 번째 행을 제외하고 동일한 첫 번째 행이있는 행 그룹 삭제

  6. 6

    Oracle SQL-각각의 첫 번째 항목 만 표시하면서 유사한 행의 합계 합계

  7. 7

    Oracle SQL-각각의 첫 번째 항목 만 표시하면서 유사한 행의 합계 합계

  8. 8

    쉘 스크립트를 사용하여 각 행의 첫 번째 쉼표를 제외한 모든 쉼표 제거

  9. 9

    두 번째 필드를 기준으로 정렬 한 다음 첫 번째 열이 동일한 행을 다시 정렬하지만 각 그룹에 대해 두 번째 필드의 순서는 유지합니다.

  10. 10

    UITableView의 첫 번째 행만 표시

  11. 11

    그룹에서 첫 번째 행 제외

  12. 12

    간단한 HTML DOM 파서. 테이블의 첫 번째 행을 제거한 다음 각 행의 두 번째 열을 제거하십시오.

  13. 13

    Apache Spark flattern을 사용하면 Java로 각 그룹의 첫 번째 행 2 개

  14. 14

    각 그룹 SQL에 대한 첫 번째 행 가져 오기

  15. 15

    그룹의 첫 번째 인스턴스가 표시된 후 그룹 헤더의 내용을 억제합니다.

  16. 16

    Oracle-각 제품의 첫 번째 행만 반환

  17. 17

    열의 각 값에 대해 첫 번째 행만 복제

  18. 18

    표의 첫 번째 행을 제외한 모든 행에 대한 마우스 오버 효과

  19. 19

    각 그룹의 행을 첫 번째 행 값으로 바꿉니다. 팬더 그룹 비

  20. 20

    5 개 세트의 값을 그룹화 한 다음 각 그룹의 첫 번째 값을 반환합니다.

  21. 21

    SQL 제한이 첫 번째 행을 표시하지

  22. 22

    도시 이름으로 그룹화하고 첫 번째 행에 동일한 도시 이름 만 표시

  23. 23

    각 행의 첫 번째 값을 제외한 각 행의 평균을 계산하려면 어떻게해야합니까?

  24. 24

    각 배열의 첫 번째 및 세 번째 값 표시

  25. 25

    첫 번째 행을 제외한 모든 워크 시트에 Application.ScreenUpdating 적용

  26. 26

    MVC, foreach 루프의 각 다른 이름에 대한 첫 번째 항목 만 표시

  27. 27

    각 그룹 R에서 마지막 / 첫 번째 행 삭제 / 제거

  28. 28

    그룹별로 각 행의 날짜 이후 조건을 충족하는 첫 번째 행 찾기

  29. 29

    pandas 데이터 프레임은 각 그룹의 첫 번째 행과 마지막 행을 비교합니다.

뜨겁다태그

보관