쿼리 질문드립니다 0 3 7,191

by 아이언조 [SQL Query] ORACLE Tibero SQL DataBase DBA [2019.04.15 14:17:49]


1.PNG (90,340Bytes)

안녕하세요 항상 도움주셔서 정말 감사합니다 ㅠㅠ

회사에 딱히 물어볼사람이없어서 여기가 제 멘토같은 곳이네요 다시 한번더 감사합니다

 

이미지 파일처럼 쿼리가 나오는데

이쿼리 결과를

REGI_DATE   포유류    조류   

2017            2            1

2018            3            4

2019            1            0

이런 형식의 결과를 얻으려면 어떻게 해야할까요? 

년도를 하나로 합치고 포유류와 조류를 행에서 컬럼으로 바꾸는건데 

검색을해도 되지가 않아서 여쭤봅니다 

사용 툴은 TIBERO입니다.

 

by 마농 [2019.04.15 15:11:00]

1. 검색조건과 집계조건이 다른데? 이렇게 다른게 맞는건지?
  - 검색조건 기간은 tb_diag_relt.regi_date 를 이용하는데.
  - 집계년도 조회는 tb_smpl_item.regi_date 를 이용하네요?
2. 기간 검색 조건이 이상합니다.
  - Between 조건을 사용하면 시작, 종료 모두 이퀄(=)이 붙는 조건인데
  - 종료조건에는 이퀄(=)이 빠져야 맞습니다.
 

SELECT TO_CHAR(regi_date, 'YYYY') 연도
     , COUNT(DECODE(smpl_smplkind, 'SK01', 1)) 포유류
     , COUNT(DECODE(smpl_smplkind, 'SK02', 1)) 조류
  FROM tb_smpl_item
 WHERE diag_req_no IN (SELECT diag_relt_no
                         FROM tb_diag_relt
                        WHERE del_yn = 'N'
                          AND regi_date >= TO_DATE('2009-01-01', 'yyyy-mm-dd')
                          AND regi_date <  TO_DATE('2019-04-15', 'yyyy-mm-dd') + 1
                        )
   AND smpl_smplkind IN ('SK01', 'SK02')
 GROUP BY TO_CHAR(regi_date, 'YYYY')
 ORDER BY 연도
;

 


by 아이언조 [2019.04.15 15:28:23]

네 다른 검색조건맞습니다

Between 조건도 수정하였습니다.

알려주신 소스코드 돌려보니 오류가 발생해서요

tb_smpl_item.diag_req_no 와 tb_diag_relt.diag_relt_no 이렇게 다른게 맞습니다

그래서 알려주신 쿼리를 

SELECT TO_CHAR(regi_date, 'YYYY') 연도
			     , COUNT(DECODE(smpl_smpkind, 'SK01', 1)) 포유류
			     , COUNT(DECODE(smpl_smpkind, 'SK02', 1)) 조류
			  FROM tb_smpl_item
			 WHERE diag_req_no IN (SELECT diag_relt_no
			                          FROM tb_diag_relt
			                         WHERE del_yn = 'N'
			                           AND regi_date >= TO_DATE('2009-01-01', 'yyyy-mm-dd')
			                           AND regi_date <  TO_DATE('2019-04-15', 'yyyy-mm-dd') + 1
			                        )
			  AND smpl_smpkind IN ('SK01', 'SK02')
			 GROUP BY TO_CHAR(regi_date, 'YYYY')
			 ORDER BY 연도;

이렇게 수정하였는데

JDBC-8026:Invalid identifier.    at line 11, column 11:               AND smpl_smpkind IN ('SK01', 'SK02')                  ^

오류가 발생했습니다 원인은 테이블 필드에 없다고 검색되는데 테이블에 존재하는 필드거든요.. 쿼리가안돌아가는 이유는 뭘까요    
 

 


by 마농 [2019.04.15 15:31:17]

질문 올리실 때 이미지로 올리지 마시고 텍스트로 올려주세요.
이미지 보고 따라 치다가 오타 난거네요.
오타 수정하세요. smpl_smpkind  --> smpl_smplkind

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입