오라클 쿼리문 질문드립니다 0 4 1,611

by IT노동자 [2014.07.23 20:18:39]


DATE                  |   SPED

20140723010000   |    10
20140723020000   |    20
20140723030000   |    30
20140723040000   |    40
20140723050000   |    50

 

결과

컬럼명(시간)  01  |  02  |  03  |  04  |  05  | 06

SPED           10     20    30     40    50     0

이런 결과을 얻고 싶은데 잘안되네요 ㅜㅜ

DATE 컬럼은 년월일시분초를 나타내어 매일 변하고 각 시간대별 스피드를 구하고 싶은데

아직 오라클을 시작하는지라 많이 어렵네요

by 마농 [2014.07.23 22:48:12]

1. 날짜 항목의 Data Type 은 뭔가요?
  - DATE ? or VARCHAR2(14) ?
2. 데이터 발생 주기는 어떻게 되나요?
  - 매 시각 정각에만 1건씩만 발생?
  - 아니면 수시로 발생?
3. 수시로 발생 될 경우? 중복되는 Sped 항목은 어떻게 표현하나요?
  - 최대값? 최소값? 평균값? 기타?


by IT노동자 [2014.07.23 23:57:11]

1. 날짜는 VARCHAR2입니다

2. 매시각 정각 시각입니다 정확시 분은 따지지 않고 시각으로만 데이터를 가져올려고 합니다 1시의 sped 2시의 sped 이렇게 가져올려고 합니다

한시간이 딱 한건의 데이터의 경우입니다

지금까지 풀어보고있는데 어렵네요 ㅜㅜ


by 마농 [2014.07.24 08:35:02]
WITH t AS
(
SELECT '20140723010000' dt, 10 sped FROM dual
UNION ALL SELECT '20140723020000', 20 FROM dual
UNION ALL SELECT '20140723030000', 30 FROM dual
UNION ALL SELECT '20140723040000', 40 FROM dual
UNION ALL SELECT '20140723050000', 50 FROM dual
)
SELECT 'SPED' gb
     , NVL(MIN(DECODE(SUBSTR(dt, 9, 2), '01', sped)), 0) "01"
     , NVL(MIN(DECODE(SUBSTR(dt, 9, 2), '02', sped)), 0) "02"
     , NVL(MIN(DECODE(SUBSTR(dt, 9, 2), '03', sped)), 0) "03"
     , NVL(MIN(DECODE(SUBSTR(dt, 9, 2), '04', sped)), 0) "04"
     , NVL(MIN(DECODE(SUBSTR(dt, 9, 2), '05', sped)), 0) "05"
     , NVL(MIN(DECODE(SUBSTR(dt, 9, 2), '06', sped)), 0) "06"
  FROM t
 WHERE dt LIKE '20140723%'
;

 


by IT노동자 [2014.07.24 09:49:09]

마농님 언제나 도움을 주셔서 감사합니다 저도 실력을 늘려서 마농님처럼 누구에게 도움이 되는 개발자가 되어야겠습니다~^^ 다시 한번 감사드립니다. 열심히 분석해볼께요

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