最少(实际值,480)+案例当原因为“培训”时,然后支付其他0结束)作为stg的tot,其中ref_id='H1'按ref_id分组)选择ref_id,案例当tot我们可以在打包过程中调用SQL。这只是选择与查询投影匹配的变量(或记录变量)的问题。PL/S

最少(实际值,480)+案例当原因为“培训”时,然后支付其他0结束)作为stg的tot,其中ref_id='H1'按ref_id分组)选择ref_id,案例当tot我们可以在打包过程中调用SQL。这只是选择与查询投影匹配的变量(或记录变量)的问题。PL/S,sql,oracle,Sql,Oracle,最少(实际值,480)+案例当原因为“培训”时,然后支付其他0结束)作为stg的tot,其中ref_id='H1'按ref_id分组)选择ref_id,案例当tot我们可以在打包过程中调用SQL。这只是选择与查询投影匹配的变量(或记录变量)的问题。PL/SQL文档,甚至这个站点,如果你不能自己理解的话,都会有很多例子。 + -------+--------+------+----------+ | Ref_ID | Actual | Paid | Reason | + -------+---


最少(实际值,480)+案例当原因为“培训”时,然后支付其他0结束)作为stg的tot,其中ref_id='H1'按ref_id分组)选择ref_id,案例当tot我们可以在打包过程中调用SQL。这只是选择与查询投影匹配的变量(或记录变量)的问题。PL/SQL文档,甚至这个站点,如果你不能自己理解的话,都会有很多例子。 + -------+--------+------+----------+ | Ref_ID | Actual | Paid | Reason | + -------+--------+------+----------+ | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 0 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 0 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 0 | 480 | TRAINING | | H1 | 0 | 0 | | | H1 | 360 | 0 | | | H1 | 360 | 0 | | + -------+--------+------+----------+
 SELECT
    CASE WHEN (SUM(CASE WHEN (ACTUAL)>480 THEN 480 ELSE (ACTUAL) END))>1440 THEN
    ((SUM(CASE WHEN (ACTUAL)>480 THEN 480 ELSE (ACTUAL) END))-1440) ELSE 0
    END SINGLE_RATE
    FROM STG WHERE REF_ID='H1'
    GROUP BY REF_ID;
SELECT
    CASE WHEN (SUM(CASE WHEN (ACTUAL)>480 THEN 480 ELSE (ACTUAL) END)+(case when reason = 'training' then paid else 0 end ))>1440 THEN
    ((SUM(CASE WHEN (ACTUAL)>480 THEN 480 ELSE (ACTUAL) END)+(case when reason = 'training' then paid else 0 end ))-1440) ELSE 0
    END SINGLE_RATE
    FROM STG WHERE REF_ID='H1'
    GROUP BY REF_ID;
    ORA-00979: not a GROUP BY expression
    00979. 00000 -  "not a GROUP BY expression"
    *Cause:
    *Action:
SELECT
    (sum ( (CASE WHEN (ACTUAL)>480 THEN 480 ELSE (ACTUAL) END) + case when reason = 'training' then paid else 0 end )-1440) SINGLE_RATE
    FROM STG WHERE REF_ID='H1'
    GROUP BY REF_ID
    having sum ( (CASE WHEN (ACTUAL)>480 THEN 480 ELSE (ACTUAL) END) + case when reason = 'training' then paid else 0 end )>1440;
select ref_id
      , sum ( least(actual, 480) + case when reason = 'training' then paid else 0 end ) as tot
from stg
group by ref_id
/
with cte as (
    select ref_id
          , sum ( least(actual, 480) + case when reason = 'training' then paid else 0 end ) as tot
    from stg
    group by ref_id
    )
select ref_id
       case 
          when tot <= 1440 then tot
          else tot - 1440
       end as adjusted_tot
from cte
/