기관구분 | 분류코드 | 차트번호 | 진료일자 | 일련번호 | 사용코드 | 코드명 | 구분코드 | 비고 |
000001 | 10 | 00000001 | 20160104 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160104 | 2 | HA444 | 일반전산화단층영상 | B01 | |
000001 | 10 | 00000001 | 20160107 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160107 | 2 | HA444 | 일반전산화단층영상 | B01 | |
000001 | 10 | 00000001 | 20160111 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160111 | 2 | CX747 | 핵의학적방법 | C01 | |
000001 | 10 | 00000001 | 20160111 | 3 | HA475 | 일반전산화단층영상-복부 |
B03 |
|
000001 | 10 | 00000001 | 20160114 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160114 | 2 | HA444 | 일반전산화단층영상 | B01 | |
000001 | 10 | 00000001 | 20160118 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160118 | 2 | HA444 | 일반전산화단층영상 | B01 | |
000001 | 10 | 00000001 | 20160121 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160121 | 2 | CX747 | 핵의학적방법 | C01 | |
000001 | 10 | 00000001 | 20160125 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160125 | 2 | CX747 | 핵의학적방법 | C01 | |
000001 | 10 | 00000001 | 20160128 | 1 | C5590 | 호르몬수용체검사 |
A01 |
|
000001 | 10 | 00000001 | 20160128 | 2 | HA444 | 일반전산화단층영상 | B01 | |
000001 | 10 | 00000001 | 20160128 | 3 | CX747 | 핵의학적방법 | C01 |
안녕하세요~모두 새해복 많이 받으세요~(__)
쿼리를 만드려니 막히는 부분이 있어 고수님 도움을 받고자 이렇게 글을 작성하네요~
다름이 아니라 2016년 1월에 매주 2회 이상, 월 8회 이상 사용된 코드인지 확인하고자 합니다
위 검사테이블을 보시면
구분코드 A01의 경우 2016년 1월에 매주 2회 씩 그리고 1달(4주)동안 총 8회 사용되었습니다
구분코드 B01의 경우는 1월 첫주는 2회지만 나머지 주에는 1번밖에 사용이 안되었습니다 1달동안에도 총5회 사용되었습니다
A01코드가 1월 매주 2회이상 그리고 월 8회이상 사용되었는지를 체크하는 쿼리가 어떤식으로 구현되는지 고수님들 부탁좀 드
립니다. COUNT를 사용해서 찾으면 될꺼는 같은데 감이 오질 않네요;;
그리고 혹시 가능하시다면 MSSQL과 오라클로 나뉘어서 알고싶습니다
부탁좀 드리겠습니다 새해 복 많이 받으시구요~가족분들과도 즐거운 명절 보내세요~^^
WITH T AS ( SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160104' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160104' AS MEDDATE,'2' AS C4,'HA444' AS C5,'일반전산화단층영상' AS C6,'B01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160107' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160107' AS MEDDATE,'2' AS C4,'HA444' AS C5,'일반전산화단층영상' AS C6,'B01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160111' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160111' AS MEDDATE,'2' AS C4,'CX747' AS C5,'핵의학적방법' AS C6,'C01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160111' AS MEDDATE,'3' AS C4,'HA475' AS C5,'일반전산화단층영상-복부' AS C6,'B03' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160114' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160114' AS MEDDATE,'2' AS C4,'HA444' AS C5,'일반전산화단층영상' AS C6,'B01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160118' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160118' AS MEDDATE,'2' AS C4,'HA444' AS C5,'일반전산화단층영상' AS C6,'B01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160121' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160121' AS MEDDATE,'2' AS C4,'CX747' AS C5,'핵의학적방법' AS C6,'C01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160125' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160125' AS MEDDATE,'2' AS C4,'CX747' AS C5,'핵의학적방법' AS C6,'C01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160128' AS MEDDATE,'1' AS C4,'C5590' AS C5,'호르몬수용체검사' AS C6,'A01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160128' AS MEDDATE,'2' AS C4,'HA444' AS C5,'일반전산화단층영상' AS C6,'B01' AS GB FROM DUAL UNION ALL SELECT '000001' AS C0,'10' AS C1,'1' AS C2,'20160128' AS MEDDATE,'3' AS C4,'CX747' AS C5,'핵의학적방법' AS C6,'C01' AS GB FROM DUAL ) SELECT GB, YMON FROM (SELECT GB, SUBSTR(MEDDATE,1,6) YMON , TO_CHAR (TO_DATE (MEDDATE, 'yyyymmdd'), 'iw') WEEK , COUNT (1) CNT FROM T GROUP BY GB, SUBSTR(MEDDATE,1,6), TO_CHAR (TO_DATE (MEDDATE, 'yyyymmdd'), 'iw') ) GROUP BY GB, YMON HAVING COUNT (WEEK) = COUNT (CASE WHEN CNT >= 2 THEN 1 ELSE NULL END)
새해 복 많이 받으세요~~
병원시스템 운영하시나요? 많이 보던 edi코드와 명칭들이..
저도 병원시스템 운영중이예요ㅋㅋ 연휴인데 처방 안들어간다고 전화받고
잠깐 회사 컴터 붙었네요ㅠㅠ
일단 주차가 어떤 기준인지부터 정하셔야할 것 같구요.
(일요일부터 시작인지, 월요일부터 시작인지,
단순이 1일부터 7일 단위로 끊을 것인지,
2월 29일 같은 날은 2월 마지막주로 잡을 것인지 3월 첫주에 포함할 것인지,
월요일이 주의 시작으로 보고 2월 29일을 5주차로 잡으면 29일에 처방이 2개
존재하지 않으면 매주 2회라는 조건때문에 제외되겠죠..)
저는 iw 기준으로 생각하고 했어요. 원하시는 결과물의 형태도
적어주시면 더 좋을 것 같고..
적어주시면 다른 분이 더 멋지고 깔쌈한 쿼리로 답변드릴 겁니다ㅋㅋ
수고하세용^^
또 궁금한게 있어서 문의드립니다
만약 해당 검사 일자가 서로 일치하는 경우에 그 해당 일자를 가지고 오고 싶은데요
예를 들면
2016년 01월에 A01의 처음 사용한 일자와 B01 처음 사용한 일자가 같으면 '20160104' 일자를 가지고
오는 거지요. 아래 쿼리는 같은날에 하면 결과값이 1이고 다른날이면 결과값이 2 미시행일경우 결과 같이 3이 나오도록 한 MSSQL 쿼리문인데요 만약 A01과 B01 검사가 같은날 동시에 이루어졌을때 일자를 가지고 오는 쿼리는 어떻게 해야할까요? 그리고 아래 쿼리를 좀더 간결하게도 가능할까요? 도움 부탁드립니다 (__)
SELECT (CASE WHEN( ( SELECT 진료일자 FROM ( SELECT ROW_NUMBER() OVER(ORDER BY 진료일자,일련번호 ASC) AS RN, 진료일자 FROM 검사테이블 WHERE 기관구분 = '000001' AND 분류코드 = '10' AND 차트번호 = '00000001' AND LEFT(진료일자,6) = '201601' AND 구분코드 = 'A01' ) A WHERE RN = 1 ) = ( SELECT 진료일자 FROM ( SELECT ROW_NUMBER() OVER(ORDER BY 진료일자,일련번호 ASC) AS RN, 진료일자 FROM 검사테이블 WHERE 기관구분 = '000001' AND 분류코드 = '10' AND 차트번호 = '00000001' AND LEFT(진료일자,6) = '201601' AND 구분코드 = 'B01' ) A WHERE RN = 1 ) ) THEN 1 WHEN SELECT 진료일자 FROM ( SELECT ROW_NUMBER() OVER(ORDER BY 진료일자,일련번호 ASC) AS RN, 진료일자 FROM 검사테이블 WHERE 기관구분 = '000001' AND 분류코드 = '10' AND 차트번호 = '00000001' AND LEFT(진료일자,6) = '201601' AND 구분코드 = 'A01' ) A WHERE RN = 1 ) <> ( SELECT 진료일자 FROM ( SELECT ROW_NUMBER() OVER(ORDER BY 진료일자,일련번호 ASC) AS RN, 진료일자 FROM 검사테이블 WHERE 기관구분 = '000001' AND 분류코드 = '10' AND 차트번호 = '00000001' AND LEFT(진료일자,6) = '201601' AND 구분코드 = 'B01' ) A WHERE RN = 1 ) ) THEN 2 ELSE 3 END) 결과값