orcle查询问题

jjlmsy 2018-04-19 08:37:41
统计各个员工涨幅的次数总和,表如下:

其中emp_no是员工编号,from_date是起始时间

我写的sql:
select emp_no,
sum((select * from(select
case when a.salary>b.salary
then 1 else 0 end
from salaries a
where a.emp_no = b.emp_no
and a.from_date > b.from_date
order by a.from_date asc)
where rownum=1))
from salaries b
group by b.emp_no;
在倒数第五行报 b.from_date 标识符无效,求问给位大神该怎么改啊
...全文
1411 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
常清静矣~ 2018-05-07
  • 打赏
  • 举报
回复
sum 为oracleho中的聚合函数,在查询语句中使用聚合函数的时候,在where流程语句中都需要用group by进行分组。列名无效的时候。可以看下查询结果起别名的时候需要注意下小括号的结束位置。
qq_41776830 2018-04-29
  • 打赏
  • 举报
回复
引用 4 楼 qq_41776830的回复:
from_date列的属性名呢,将列名改为*
select emp_no, 列名 from 表明
qq_41776830 2018-04-29
  • 打赏
  • 举报
回复
from_date列的属性名呢,将列名改为*
卖水果的net 2018-04-20
  • 打赏
  • 举报
回复

-- 套一层是可以的。
select *,(select col from a where a.id = b.id) from b

-- 两层是不可以的
select *, (select (select col from a where a.id = b.id) from xxx where ) from b
sych888 2018-04-19
  • 打赏
  • 举报
回复
可以研究一下对应的分析函数 会存在降薪的情况吗?
  • 打赏
  • 举报
回复
order by a.from_date asc) 后面给个别名试试,

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧