Oracle SQL显示将一个变量除以另一个变量的结果
我需要计算总金额的年初至今每周平均值 在下面的脚本中,代码的第一部分获取周数。代码的第二部分获取同一时间段的YTD总和 如何编写SQL,以便检索YtdTotal/TotalWeeks的实际值 从DUAL中选择YtdTotal/TotalWeeks;不起作用Oracle SQL显示将一个变量除以另一个变量的结果,oracle,variables,division,Oracle,Variables,Division,我需要计算总金额的年初至今每周平均值 在下面的脚本中,代码的第一部分获取周数。代码的第二部分获取同一时间段的YTD总和 如何编写SQL,以便检索YtdTotal/TotalWeeks的实际值 从DUAL中选择YtdTotal/TotalWeeks;不起作用 -- STORES NUMBER OF WEEKS SINCE BEGINING OF YEAR INTO THE VARIABLE, TotalWeeks DECLARE TotalWeeks NUMBER; BEGIN S
-- STORES NUMBER OF WEEKS SINCE BEGINING OF YEAR INTO THE VARIABLE, TotalWeeks
DECLARE
TotalWeeks NUMBER;
BEGIN
SELECT to_number(to_char(sysdate, 'WW')) - to_number(to_char(trunc(sysdate, 'year'),'WW'))
INTO TotalWeeks
FROM DUAL
-- (retrieves number of weeks since beginning of year)
END
-- STORES THE SUM OF GROSS)AMOUNT FOR THE WEEKS CALCULATED ABOVE - INTO THE
DECLARE
VARIABLE, YtdTotal
BEGIN
SELECT SUM(GROSS_AMOUNT)
INTO YtdTotal
FROM PARENTS
WHERE process_date BETWEEN
(next_day(TRUNC(sysdate, 'year'),'SUN'))
AND
(next_day(TRUNC(sysdate),'SAT')-7);
END;
不要使用两个单独的匿名PL/SQL块-将它们组合成一个 如果要返回结果,则创建一个函数,而不是匿名PL/SQL块
CREATE OR REPLACE FUNCTION f_test
return NUMBER
IS
totalweeks NUMBER;
ytdtotal NUMBER;
result NUMBER;
BEGIN
-- STORES NUMBER OF WEEKS SINCE BEGINING OF YEAR INTO THE VARIABLE, TotalWeeks
SELECT TO_NUMBER (TO_CHAR (SYSDATE, 'WW'))
- TO_NUMBER (TO_CHAR (TRUNC (SYSDATE, 'year'), 'WW'))
INTO totalweeks
FROM DUAL;
-- (retrieves number of weeks since beginning of year)
-- STORES THE SUM OF GROSS)AMOUNT FOR THE WEEKS CALCULATED ABOVE - INTO THE
SELECT SUM (gross_amount)
INTO ytdtotal
FROM parents
WHERE process_date BETWEEN (NEXT_DAY (TRUNC (SYSDATE, 'year'), 'SUN'))
AND (NEXT_DAY (TRUNC (SYSDATE), 'SAT') - 7);
-- the final result
result := ytdtogal / totalweeks;
RETURN result;
END;
/
把它当作
select f_test from dual;
你为什么要申请从日期到系统日期?to_date将字符串转换为日期(数据类型),sysdate是日期。此外,如果您实际复制并粘贴文本,将粘贴的文本格式化为“代码”,而不是屏幕截图,那么您的代码将更易于我们阅读。此外,如果为表和插入项提供DDL以创建代表性数据,也会有所帮助。谢谢你的反馈。我已经更正了最新的问题,并用代码格式替换了屏幕截图。我真正需要知道的是检索YtdTotal除以TotalWeeks的值的正确语法。这些是我将计算传递给成功执行的查询的变量,谢谢。但我不确定如何从“result”变量中检索实际值。我试着从DUAL中选择结果,但结果不起作用。然后,它将是一个函数。我编辑了答案,看一看。很好,非常感谢。不客气。