【发布时间】:2019-02-12 09:59:37
【问题描述】:
我对主题中的案例有疑问。我想减去两个金额之间的剩余部分。
如果有一个值 > 0,那么我想为每个按 MANAGER_ID 分区的员工添加其余部分,但每 1 美分。
例如:其余的是 0,04 美元,我有 3 名员工,由同一位经理领导。我将选择员工 ID 的最大值并将 0,01$ 添加到记录中,第二个获得 0,01$,下一个获得 0,01$,员工 ID 的最大值再次获得 0,01$,因为如果其余的人数高于同一经理的员工人数,那么它将循环。
另一个例子是当我们有 0,02$ 休息和四名员工时,那么只有前两个将获得 0,01$,最后两个将获得 0,00$。
如何只使用 SQL 呢?没有 PL/SQL。我会感激每一个帮助。
CREATE TABLE TMP_SCKOV_CASE
(MANAGER_ID NUMBER
,EMPLOYEE_ID NUMBER
,AMOUNT NUMBER
,AMOUNT2 NUMBER
);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (1,122,1053.21, 1053.23);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (1,123,1053.21, 1053.23);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (1,124,1053.21, 1053.23);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (1,125,1053.21, 1053.23);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (5,126,1229.87, 1229.92);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (5,127,1229.87, 1229.92);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (5,128,1229.87, 1229.92);
INSERT INTO TMP_SCKOV_CASE (MANAGER_ID, EMPLOYEE_ID, AMOUNT, AMOUNT2) VALUES (5,129,1229.87, 1229.92);
SELECT T.*, T.AMOUNT2-T.AMOUNT DIFF FROM TMP_SCKOV_CASE T
【问题讨论】:
-
轻松为您提供帮助:stackoverflow.com/help/mcve
-
请添加一些代码
-
对不起,我通过添加代码更新了。
标签: sql database oracle oracle11g