SQL을 이용하여 2진 변수를 생성하고 싶습니다. 0 2 667

by 빛나는관 [2016.04.13 18:54:59]


Id Name Class Pay_date(수강연월) Reg_date(최초학원등록연월)
001 홍길동 국어 201601 201510
002 강감찬 영어 201601 201511
003 이순신 수학 201601 201512
003 이순신 영어 201601 201512
002 강감찬 수학 201602 201511
003 이순신 국어 201602 201512
004 김두한 국어 201602 201602
001 홍길동 영어 201603 201510
002 강감찬 과학 201603 201511

학생들이 수강한 위의 데이터를 가지고 아래와 같이 만들고 싶습니다.

Id Name 국어 영어 수학 과학 사회 수강연월
001 홍길동 1 0 0 0 0 201601
002 강감찬 0 1 0 0 0 201601
003 이순신 0 1 1 0 0 201601
004 김두한 1 0 0 0 0 201602
001 홍길동 0 1 0 0 0 201603
002 강감찬 0 0 0 1 0 201603

방법을 알려주시면 정말 감사하겠습니다-!

by 김용한 [2016.04.13 21:58:54]

id(pk) 가 중복값이 있네요 ...

어떤기준으로 그룹바이 해야할지 모호하네요 ...

결과테이블이 원하는결과가맞나요? 제가짠쿼리는 님이올린결과랑틀리게나오네요 ...

기준을 정확하게정해주세요 ...

WITH T AS
(
select '001' as id,    '홍길동' as name,    '국어' as class,    '201601' as pay_date,    '201510' as reg_date from dual union all
select '002',    '강감찬',    '영어',    '201601',    '201511' from dual union all
select '003',    '이순신',    '수학',    '201601',    '201512' from dual union all
select '003',    '이순신',    '영어',    '201601',    '201512' from dual union all
select '002',    '강감찬',    '수학',    '201602',    '201511' from dual union all
select '003',    '이순신',    '국어',    '201602',    '201512' from dual union all
select '004',    '김두한',    '국어',    '201602',    '201602' from dual union all
select '001',    '홍길동',    '영어',    '201603',    '201510' from dual union all
select '002',    '강감찬',    '과학',    '201603',    '201511' from dual
)
select t.pay_date
      ,t.id
      ,t.name
      ,sum(decode(t.class,'국어',1,0)) as 국어 
      ,sum(decode(t.class,'영어',1,0)) as 영어
      ,sum(decode(t.class,'수학',1,0)) as 수학
      ,sum(decode(t.class,'과학',1,0)) as 과학
      ,sum(decode(t.class,'사회',1,0)) as 사회
  from t
 group by
       t.pay_date
      ,t.id
      ,t.name
 order by
       t.pay_date
      ,t.id
      ,t.name

 


by 빛나는관 [2016.04.13 22:19:09]

답변 진심으로 감사합니다.

Id에 PK를 표시 해 놓았었는데, 혼돈을 드려서 죄송합니다.

따로 PK를 두지 않고 Id, Class, Pay_date로 구분할 수는 없을까요?

올려주신 답변을 통해 해결해 보겠습니다. 감사합니다.

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