暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 获取最新的总价值

askTom 2017-09-08
355

问题描述

嗨,

我们想获取emp id = 2的最新总价值,但它对emp_id = 2的所有行的总和total_value。

我们只需要emp_id = 2的最新行的结果 (total_value)。语句和查询如下所示,


创建表emp_test (emp_id号,emp_name varchar2(50),dept_id号,工资号)
/
创建表dep_test (dept_id编号,dept_name varchar2(50),转售编号,total_cost编号)
/

插入emp_test值 (1,'A',10,1000)
/
插入emp_test值 (2,'B',10, 2000)
/
插入emp_test值 (3,'C',20,3000)
/
插入emp_test值 (4,'D',20,4000)
/
插入emp_test值 (5,'E',30, 5000)
/

插入到dep_test值 (10,'d10',1000,1000)
/
插入到dep_test值 (10,'d20',2000,2000)
/
插入到dep_test值 (20,'d30',3000,3000)
/
插入到dep_test值 (20,'d40',4000,4000)
/
插入dep_test值 (10,'d50',4000,4000)
/

提交
/

查询:

选择round(sum(a.total_value),2) total_value从
(从emp_test et中选择et.dept_id,(dt.toal_cost dt.转售) total_value,max(et.emp_id),dep_test dt
其中et.dept_id = dt.dept_id
和et。dept_id = 10
按et.dept_id分组,dt.toal_cost,dt.转售) a;

请建议。

谢谢。

专家解答

感谢您的测试用例,但我不确定您的意思。


SQL> create table emp_test (emp_id number, emp_name varchar2(50),dept_id number, salary number)
  2  /

Table created.

SQL>
SQL> create table dep_test (dept_id number, dept_name varchar2(50),resale number, total_cost number)
  2  /

Table created.

SQL>
SQL>
SQL>
SQL> insert into emp_test values (1,'A',10,1000)
  2  /

1 row created.

SQL> insert into emp_test values (2,'B',10,2000)
  2  /

1 row created.

SQL> insert into emp_test values (3,'C',20,3000)
  2  /

1 row created.

SQL> insert into emp_test values (4,'D',20,4000)
  2  /

1 row created.

SQL> insert into emp_test values (5,'E',30,5000)
  2  /

1 row created.

SQL> insert into dep_test values (10,'D10',1000,1000)
  2  /

1 row created.

SQL> insert into dep_test values (10,'D20',2000,2000)
  2  /

1 row created.

SQL> insert into dep_test values (20,'D30',3000,3000)
  2  /

1 row created.

SQL> insert into dep_test values (20,'D40',4000,4000)
  2  /

1 row created.

SQL> insert into dep_test values (10,'D50',4000,4000)
  2  /

1 row created.

SQL>
SQL> commit
  2  /

Commit complete.

SQL>
SQL>
SQL>
SQL> select *
  2  from  emp_test et, dep_test dt
  3  where et.dept_id = dt.dept_id
  4  and   et.emp_id = 2;

    EMP_ID EMP_NAME      DEPT_ID     SALARY    DEPT_ID DEPT_NAME        RESALE TOTAL_COST
---------- ---------- ---------- ---------- ---------- ------------ ---------- ----------
         2 B                  10       2000         10 D10                1000       1000
         2 B                  10       2000         10 D20                2000       2000
         2 B                  10       2000         10 D50                4000       4000

3 rows selected.

SQL>
SQL>
SQL>


这就是相当于EMP_ID = 2的部门行...那么你到底想要什么呢?我们需要更多的信息
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论