|
| 1 | +create table tmp(rq varchar2(10),shengfu varchar2(5)); |
| 2 | + |
| 3 | +insert into tmp values('2005-05-09','ʤ'); |
| 4 | +insert into tmp values('2005-05-09','ʤ'); |
| 5 | +insert into tmp values('2005-05-09','��'); |
| 6 | +insert into tmp values('2005-05-09','��'); |
| 7 | +insert into tmp values('2005-05-10','ʤ'); |
| 8 | +insert into tmp values('2005-05-10','��'); |
| 9 | +insert into tmp values('2005-05-10','��'); |
| 10 | + |
| 11 | +/* |
| 12 | + ʤ �� |
| 13 | +2005-05-09 2 2 |
| 14 | +2005-05-10 1 2 |
| 15 | + |
| 16 | +*/ |
| 17 | + |
| 18 | +select rq,decode(shengfu,'ʤ',1),decode(shengfu,'��',2) from tmp; |
| 19 | + |
| 20 | +select rq, |
| 21 | + count(decode(shengfu, 'ʤ', 1)) ʤ, |
| 22 | + count(decode(shengfu, '��', 2)) �� |
| 23 | + from tmp |
| 24 | + group by rq; |
| 25 | + |
| 26 | + |
| 27 | +create table STUDENT_SCORE |
| 28 | +( |
| 29 | + name VARCHAR2(20), |
| 30 | + subject VARCHAR2(20), |
| 31 | + score NUMBER(4,1) |
| 32 | +); |
| 33 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', '����', 78.0); |
| 34 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', '��ѧ', 88.0); |
| 35 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', 'Ӣ��', 98.0); |
| 36 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', '����', 89.0); |
| 37 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', '��ѧ', 76.0); |
| 38 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', 'Ӣ��', 90.0); |
| 39 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', '����', 99.0); |
| 40 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', '��ѧ', 66.0); |
| 41 | +insert into student_score (NAME, SUBJECT, SCORE) values ('����', 'Ӣ��', 91.0); |
| 42 | + |
| 43 | + |
| 44 | +/* |
| 45 | +���� ���� ��ѧ Ӣ�� |
| 46 | +���� 89 56 89 |
| 47 | +*/ |
| 48 | +--����ʹ��4�з�ʽ��д�� |
| 49 | +--decode |
| 50 | +select ss.name, |
| 51 | + max(decode(ss.subject, '����', ss.score)) ����, |
| 52 | + max(decode(ss.subject, '��ѧ', ss.score)) ��ѧ, |
| 53 | + max(decode(ss.subject, 'Ӣ��', ss.score)) Ӣ�� |
| 54 | + from student_score ss group by ss.name |
| 55 | +--case when |
| 56 | +select ss.name, |
| 57 | + max(case ss.subject |
| 58 | + when '����' then |
| 59 | + ss.score |
| 60 | + end) ����, |
| 61 | + max(case ss.subject |
| 62 | + when '��ѧ' then |
| 63 | + ss.score |
| 64 | + end) ��ѧ, |
| 65 | + max(case ss.subject |
| 66 | + when 'Ӣ��' then |
| 67 | + ss.score |
| 68 | + end) Ӣ�� |
| 69 | + from student_score ss |
| 70 | + group by ss.name; |
| 71 | +--join |
| 72 | +select ss.name,ss.score from student_score ss where ss.subject='����'; |
| 73 | +select ss.name,ss.score from student_score ss where ss.subject='��ѧ'; |
| 74 | +select ss.name,ss.score from student_score ss where ss.subject='Ӣ��'; |
| 75 | + |
| 76 | +select ss01.name, ss01.score ����, ss02.score ��ѧ, ss03.score Ӣ�� |
| 77 | + from (select ss.name, ss.score |
| 78 | + from student_score ss |
| 79 | + where ss.subject = '����') ss01 |
| 80 | + join (select ss.name, ss.score |
| 81 | + from student_score ss |
| 82 | + where ss.subject = '��ѧ') ss02 |
| 83 | + on ss01.name = ss02.name |
| 84 | + join (select ss.name, ss.score |
| 85 | + from student_score ss |
| 86 | + where ss.subject = 'Ӣ��') ss03 |
| 87 | + on ss01.name = ss03.name; |
| 88 | + |
| 89 | +--union all |
| 90 | +select ss01.name,ss01.score ����,0 ��ѧ,0 Ӣ�� from student_score ss01 where ss01.subject='����' union all |
| 91 | +select ss02.name,0 ����,ss02.score ��ѧ,0 Ӣ�� from student_score ss02 where ss02.subject='��ѧ' union all |
| 92 | +select ss03.name,0 ����,0 ��ѧ,ss03.score Ӣ�� from student_score ss03 where ss03.subject='Ӣ��' |
0 commit comments