tbM:id,kscs,csdc//id号,cscs考试次数,csdc考试等次
数据:
id kscs csdc
1001001 1 不合格
1001001 2 合格
1001002 1 合格
1001003 1 不合格
1001003 2 不合格
1001003 3 合格
假定total为kscs的计数(即count(kscs))。
查询:total为1但kscs的最大值大于1的所有行(用于检测数据的合理性)
数据:
id kscs csdc
1001001 1 不合格
1001001 2 合格
1001002 1 合格
1001003 1 不合格
1001003 2 不合格
1001003 3 合格
假定total为kscs的计数(即count(kscs))。
查询:total为1但kscs的最大值大于1的所有行(用于检测数据的合理性)
解决方案 »
- 极头痛,Oracle10g Designer 的登录问题?
- job定時啟動的問題
- OracleCommand 执行多条delete 操作?
- 用变量年岁=20 检索不到数据时就用3变量年岁=30 来检索
- 如何关闭oracle监听?
- 在sqlplus 中创建job时的问题?ORA-01008: not all variables bound
- SOS------------------------------------sp_tables-------------------------------------------------SOS
- 大家好,请帮我看看---给你加星星!
- oracle 如何建临时表(不同用户使用不同临时表)?
- 数据放哪里的问题
- 求推荐
- 求一SQL语句~~~~~~!!!!
--我怎么感觉怪怪的..total要为1,又说最大值,那就只有一个kscs求最大????
SQL> with tbM as
2 (
3 select '1001001' id , 1 kscs, '不合格'csdc from dual union all
4 select '1001001' id , 2, '合格'csdc from dual union all
5 select '1001002' id , 1, '合格'csdc from dual union all
6 select '1001003' id , 1, '不合格'csdc from dual union all
7 select '1001003' id , 2, '不合格'csdc from dual union all
8 select '1001003' id , 3, '合格'csdc from dual
9 )
10 select * from tbM a where exists(
11 select 1 cnt from tbM b where a.id = b.id group by id having count(b.kscs)=1
12 )
13 and a.kscs > =1
14 /ID KSCS CSDC
------- ---------- ------
1001002 1 合格SQL>
from tbM t
where kscs>1 and not exists(
select 1 from tbM
where id=t.id and kscs<t.kscs)
select * from(
select id,kscs,csdc,count(1)over(partition by id)total from tbM)
where kscs>1 and total=1
SELECT id from TbM
group by id
having Max(kscs)>1 and count(kscs)=1
在这里:total为:按id分组,当前id所在分组的count
不知用sql怎样模拟over?
from tbM
group by id
having total1=1) a
where kscs>1
2楼的and a.kscs > =1
等号去掉应该就可以了