问题描述
嗨,汤姆,
我正在尝试查看YTD。我有下面的观点,
假设表BillCollection具有从2017年1月到2017年12月的数据。如果我在sql下执行2017年12月月,它应该给我12月月产生的所有账单金额的总和 (MTD) 和从2017年1月到2017年12月 (YTD) 产生的所有账单金额的总和。但是,年初至今的数字根本不匹配。您能否指导我如何编写上述视图?
我正在尝试查看YTD。我有下面的观点,
create or replace view billsummary as select szRegionCode, szState, szPartitionCode, szProduct, TO_CHAR(dtSnapshot,'YYYY.MM') szMonthYear, szJioCenter, dtSnapshot, szCustomerCategory, iCycleDay, fbillamt, ibillcnt sum(CRBC.fbillamt) over (partition by szRegionCode, szState, CRBC.szProduct, TO_CHAR(CRBC.dtSnapshot,'YYYY') , CRBC.szCustomerCategory, iCycleDay order by partition by szRegionCode, szState, CRBC.szProduct, CRBC.dtSnapshot , CRBC.szCustomerCategory, iCycleDay) fytdbillamt sum(CRBC.ibillcnt) over (partition by szRegionCode, szState, CRBC.szProduct, TO_CHAR(CRBC.dtSnapshot,'YYYY') , CRBC.szCustomerCategory, iCycleDay order by partition by szRegionCode, szState, CRBC.szProduct, CRBC.dtSnapshot , CRBC.szCustomerCategory, iCycleDay) iytdBillcnt From BillCollection;复制
假设表BillCollection具有从2017年1月到2017年12月的数据。如果我在sql下执行2017年12月月,它应该给我12月月产生的所有账单金额的总和 (MTD) 和从2017年1月到2017年12月 (YTD) 产生的所有账单金额的总和。但是,年初至今的数字根本不匹配。您能否指导我如何编写上述视图?
Select szMonthYear, szregioncode, sum(fbillamt) MTD , sum (fytdbillamt) YTD From billsummary order by szMonthYear复制
专家解答
嗯 ..... 在我们开始之前,这里的观点有些不对劲
因为这不是有效的语法,例如
在不尝试做太多假设的情况下,重要的是要意识到一个视图将首先尊重视图 * 定义 *,因此一个视图确实如此:
会让列 'blah' 是表中所有行计算的总和。所以即使你这样做了:
从V中选择 * 其中name = 'jones'
然后,从 'blah' 返回的值仍将是所有行的总数,而不仅仅是name = 'BLAH' 的行
sum(CRBC.fbillamt) over (partition by ... order by partition by ...) fytdbillamt复制
因为这不是有效的语法,例如
SQL> with t as ( select 1 x, 2 y, 3 z from dual) 2 select sum(x) over ( partition by y order by partition z ) 3 from t; select sum(x) over ( partition by y order by partition z ) * ERROR at line 2: ORA-00907: missing right parenthesis复制
在不尝试做太多假设的情况下,重要的是要意识到一个视图将首先尊重视图 * 定义 *,因此一个视图确实如此:
create view V as select ..., sum(x) over () as blah复制
会让列 'blah' 是表中所有行计算的总和。所以即使你这样做了:
从V中选择 * 其中name = 'jones'
然后,从 'blah' 返回的值仍将是所有行的总数,而不仅仅是name = 'BLAH' 的行
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。