select * from A group by 编号 where having MIN(学历)
语句是错的,我是想查询到这样的结果
语句是错的,我是想查询到这样的结果
解决方案 »
- 触发器执行失败。
- win 7安装10g, 客户端无法连接 .
- 谁能和我讲解下以下SQL语句在ORACLE中是怎么执行的。先执行什么,后执行什么等?
- 在oracle中数据库实例不可用并且到实例的代理连接失败 请问怎么处理?
- ORACLE8 存储过程问题 高手帮帮忙呀?
- 创建数据库对象脚本失败,求救!
- 请大家帮忙,我创建用户时少了那些权限?
- {100分}在windows2000 professional下安装oracle817后,运行成功,当我把计算机的名称改变以后,再启动oracle时提示: ORA-12545:连接
- Why?重装Oracle8后,conn system/manager能连上,但conn system/manager@localDB却连不上?
- oracle 复杂查询,大牛挑战自己吧!来吧!!!
- 一个复杂sql文
- 超难SQL文
from tab T1 inner join (select 编号,Min(学历) from tab where 上学形式='脱产' group by 编号) T2 on T1.编号=T2.编号 and T1.学历=T2.学历这个语句也不行,提示SQL语句非正常结束
a,是什么意思?
having min(学历)执行不了
有谁能帮忙?
没有把握,你试试看吧。
字符型。
所以可以按以下方法写:select * from a where 编号+';'+学历 in
(select 编号+';'+min(学历) from a where 上学形式='脱产' group by 编号)相信我,没错的。
---------- ---------- ---------- --------- ----------
2 南京大学 脱产 4 李三
2 人民大学 脱产 3 李三
4 北京大学 脱产 3 吴仁
4 清华大学 在职 2 吴仁SQL> select b.* from b,(select 身份号,min(文化程度) 文化程度 from b where 培训形式='脱产'
2 group by 身份号) b1 where b1.身份号=b.身份号 and b1.文化程度=b.文化程度;身份号 毕业院校 培训形式 文化程度 姓名
---------- ---------- ---------- --------- ----------
2 人民大学 脱产 3 李三
4 北京大学 脱产 3 吴仁
逗号是什么意思?
SQL语句如下:
SELECT a.*
FROM (SELECT 编号,MIN(学历) AS 学历1
FROM example
GROUP BY 编号
) b,example a
WHERE b.编号 = a.编号
AND b.学历1 = a.学历
AND a.上学形式 = '脱产'其实上面有位仁兄(junglerover(灌木丛))的方式最好。
(select 编号||min(学历) from a where 上学形式='脱产' group by 编号)
但现在的问题是有人上了两次大学,学历都是本科
查询结果中这个人的两次记录都出来了
我的想法是:每个人的记录只要一条,最高学历的,培训形式是脱产的
另外:
select 编号||min(学历) from a where 上学形式='脱产' group by 编号
select 编号,min(学历) 学历 from a where 上学形式='脱产' group by 编号
这两个语句有什么区别?
但现在的问题是有人上了两次大学,学历都是本科
查询结果中这个人的两次记录都出来了
我的想法是:每个人的记录只要一条,最高学历的,培训形式是脱产的,时间是最近上的学
例如:select * from a where 编号||学历 in
(select 编号||min(学历) from a where 上学形式='脱产' group by 编号)
得到:
100 李三 南京大学 脱产 1998.09.01 本科
100 李三 天津大学 脱产 1992.09.01 本科
....
我现在只需要得到
100 李三 南京大学 脱产 1998.09.01 本科
记录就可以了
(select 编号||min(学历) from a where 上学形式='脱产' group by 编号)) b where rowid=(select min(rowid) from b group by 编号)
select * from (select * from a where 编号||学历 in
(select 编号||min(学历) from a where 上学形式='脱产' group by 编号)) b where rowid=(select min(rowid) from b group by 编号)
不行啊
-----------------------------------
where rowid=(select min(rowid) from b group by 编号)
第3行有错:
ORA-00942:表或试图不存在select * from a where 编号||学历 in
(select 编号||min(学历) from a where 上学形式='脱产' group by 编号)
执行正常
from a,(select 编号,min(学历) as 学历 from a where 上学形式='脱产' group by 编号) b, (select 编号,学历,max(入学时间) as 入学时间 from a where 上学形式='脱产' group by 编号,学历 ) c
where a.编号 = b.编号
and a.学历 = b.学历
and a.编号 = c.编号
and a.学历 = c.学历
and a.入学时间 = c.入学时间
(select 编号||min(学历) from a where 上学形式='脱产' group by 编号)) b where b.rowid=(select min(b.rowid) from b group by 编号)
1. 第3行 b.rowid=(select min(b.rowid) from b group by 编号)中,后面返回的是个集合,应该是 b.rowid in (……)
2. 整个SQL的最后那个from b 中的表b 好像不能这样用的,因为表b是一个虚表
3. 楼主的需求是最后一次时间的记录,所以用min(rowid)应该是不可以的吧希望楼住尽快试一下,告诉我们结果,也希望高手来指教指教,我们新手好共同学习。
(select 编号||min(学历)||min(入学时间) from a where 上学形式='脱产' group by 编号)
b表确实是个虚表,我试了是错误的
另外你写的句子执行是正常的,查询结果目前看是正确的,不过等我的记录全输入进去后,再核对一下To: beckhambobo(beckham)
select * from a where 编号||学历||入学时间 in
(select 编号||min(学历)||max(入学时间) from a where 上学形式='脱产' group by 编号)
这个语句很是精简,应该很好用,我回头试试
我写的那个应该符合你的要求,但是我觉得还应该有更好的方法。帮你UP一下吧
good luck