请教个问题:
现在有一张举行活动的表:
name total sex grade
------------------------
活动一 3 男 1
活动一 2 男 2
活动一 1 女 2我想得到这样的格式要怎么写?
name grade为1的男生 grade为1的女生 grade为2的男生 grade为2的女生
---------------------------------------------------------------------
活动一 3 0 2 1谢谢先~~
现在有一张举行活动的表:
name total sex grade
------------------------
活动一 3 男 1
活动一 2 男 2
活动一 1 女 2我想得到这样的格式要怎么写?
name grade为1的男生 grade为1的女生 grade为2的男生 grade为2的女生
---------------------------------------------------------------------
活动一 3 0 2 1谢谢先~~
max(decode(sex||grade,'男1',total,0)),max(decode(sex||grade,'女1',total,0)),
max(decode(sex||grade,'男2',total,0)),max(decode(sex||grade,'女2',total,0))
from table
group by name
select name,sum(case when grade=1 and sex='男' then total end) grade为1的男生,
sum(case when grade=1 and sex='女' then total end) grade为1的女生,
sum(case when grade=2 and sex='男' then total end) grade为2的男生,
sum(case when grade=2 and sex='女' then total end) grade为2的女生
from tb
group by name
是什么意思?注:我这里想得到的是人数
sex和grade拼起来,如果等于'男1',就返回total的值,如果不是,就返回0,是不是这样理解?
NAME TOTAL SEX GRADE
---------- ----- --- -----
活动一 3 男 1
活动一 2 男 2
活动一 1 女 2
SQL>
SQL> select name,sum(case when grade=1 and sex='男' then total end) grade为1的男生,
2 sum(case when grade=1 and sex='女' then total end) grade为1的女生,
3 sum(case when grade=2 and sex='男' then total end) grade为2的男生,
4 sum(case when grade=2 and sex='女' then total end) grade为2的女生
5 from ttt
6 group by name;
NAME GRADE为1的男生 GRADE为1的女生 GRADE为2的男生 GRADE为2的女生
---------- -------------- -------------- -------------- --------------
活动一 3 2 1
SQL>
SQL> select name,
2 max(decode(sex||grade,'男1',total,0)),max(decode(sex||grade,'女1',total,0)),
3 max(decode(sex||grade,'男2',total,0)),max(decode(sex||grade,'女2',total,0))
4 from ttt
5 group by name;
NAME MAX(DECODE(SEX||GRADE,'男1',TO MAX(DECODE(SEX||GRADE,'女1',TO MAX(DECODE(SEX||GRADE,'男2',TO MAX(DECODE(SEX||GRADE,'女2',TO
---------- ------------------------------ ------------------------------ ------------------------------ ------------------------------
活动一 3 0 2 1
SQL>
SQL> select name,case when grade=1 and sex='男' then total end grade为1的男生,
2 case when grade=1 and sex='女' then total end grade为1的女生,
3 case when grade=2 and sex='男' then total end grade为2的男生,
4 case when grade=2 and sex='女' then total end grade为2的女生
5 from ttt
6 ;
NAME GRADE为1的男生 GRADE为1的女生 GRADE为2的男生 GRADE为2的女生
---------- -------------- -------------- -------------- --------------
活动一 3
活动一 2
活动一 1
SQL>