参照下面的语句
SELECT col1,COUNT (CASE WHEN col2 = 'a'
THEN 1 ELSE null END) a,
COUNT (CASE WHEN col2 = 'b'
THEN 1 ELSE null END) b,
COUNT (CASE WHEN col2 = 'c'
THEN 1 ELSE null END) c
FROM table1
group by col1;
SELECT col1,COUNT (CASE WHEN col2 = 'a'
THEN 1 ELSE null END) a,
COUNT (CASE WHEN col2 = 'b'
THEN 1 ELSE null END) b,
COUNT (CASE WHEN col2 = 'c'
THEN 1 ELSE null END) c
FROM table1
group by col1;
解决方案 »
- OCI连接池报weblogic.rjvm.PeerGoneException: ; nested exception is: 错误
- linux 双机热备客户端连接时好时报错:12514无监听程序
- 碰到郁闷问题,装有oracle9,10,11的兄弟姐妹们,帮忙测测啊
- 存储过程中诸如UTL_RAW.CAST_TO_RAW这样的包函数哪里能找到相关说明?oracle sql reference里怎么搜不到?
- 请帮我看一条语句
- 请教一个简单的SQL问题
- oracle9i 访问权限问题
- 怪了,我建的外键是级联删除的,可是我删除了主表的数据后,从表的数据依然存在!!!!!请问是什么问题?
- 如何一次插入多条记录?
- 上海Oracle认证培训
- 请问在oracle中是否有实现类似sql server中with cube的功能?
- 2个在sqlserver里的系统函数,在oracle中对应的是什么
我认为应该是在程序里处理比较合理
或者写存储过程来返回一个新的游标比较好
这样既可保证效率又可以保证可扩展性
当然,如果只能出现a,b,c三种情况,你就可以采用楼上的方法
a b c
a1 yes yes yes
a2 yes yes no 我用:
SELECT COL1 ,
(CASE WHEN COL2='a' THEN 'YES' ELSE 'NO' END) a,
(CASE WHEN COL2='b' THEN 'YES' ELSE 'NO' END) b,
(CASE WHEN COL2='c' THEN 'YES' ELSE 'NO' END) c
FROM table1
得到的查询结果是:
a b c
a1 yes no no
a1 no yes no
a1 no no yes
a2 yes no no
a2 no yes no
不合要求
sum(decode col2,'a',1,col2,0) cola,
sum(decode col2,'b',1,col2,0) colb,
sum(decode col2,'c',1,col2,0) colc
FROM table1
group by col1;
sum(decode(col2,b,1,0)) b,
sum(decode(col2,c,1,0)) c,
from table1
group by col1;
col1 col2
a1 a
a1 b
a1 c
a2 a
a2 b更正查询结果是:
a b c
a1 yes yes yes
a2 yes yes no
decode(sum(decode(col2,'b',1,0)),0,'no','yes') b,
decode(sum(decode(col2,'c',1,0)),0,'no','yes') c
from table1
group by col1;