首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在对美元金额求和的查询中合并成对的会计期间

尝试在对美元金额求和的查询中合并成对的会计期间
EN

Stack Overflow用户
提问于 2018-12-21 02:44:43
回答 3查看 28关注 0票数 0

我正在苦苦思索如何得到一个查询来对会计期间进行求和,就好像它们是一个值而不是两个值。我们基本上有每个周期,它有一个相应的调整周期(例如4和904 ),我想把它们加起来,因为我的查询将它们作为单独的行返回。我希望904基本上被查询视为4。我需要为每个周期1到12 (以及901到912)执行此操作,因为我只对一个月与另一个月之间是否存在差异感兴趣,而对周期与调整期之间是否存在差异不感兴趣。

代码语言:javascript
复制
SELECT PROJECT_ID, ACCOUNTING_PERIOD, SUM(POSTED_BASE_AMT) as POSTED_AMT
FROM PS_LEDGER
WHERE LEDGER = 'ACTUALS'
AND FISCAL_YEAR = '2019'
AND (PROJECT_ID like 'PG%' OR PROJECT_ID LIKE 'GG%')
AND ACCOUNT BETWEEN '40000' AND '79999'
AND ACCOUNTING_PERIOD <> 999
GROUP BY PROJECT_ID, ACCOUNTING_PERIOD
HAVING SUM(POSTED_BASE_AMT) <> 0
ORDER BY PROJECT_ID, ACCOUNTING_PERIOD;

我的结果如下:

代码语言:javascript
复制
PROJECT_ID             ACCOUNTING PERIOD       POSTED_AMT
GG000000                       4                    -100
GG000000                      904                    100

出于这个查询的目的,我希望它是0

EN

回答 3

Stack Overflow用户

发布于 2018-12-21 03:08:15

假设您的调整周期始终是901到912,您只需减去900,group by就会将其与原始周期合并。

代码语言:javascript
复制
SELECT PROJECT_ID, 
CASE WHEN ACCOUNTING_PERIOD<900 THEN ACCOUNTING_PERIOD ELSE 900-ACCOUNTING_PERIOD END ACCOUNTING_PERIOD, 
SUM(POSTED_BASE_AMT) as POSTED_AMT
FROM PS_LEDGER
WHERE LEDGER = 'ACTUALS'
AND FISCAL_YEAR = '2019'
AND (PROJECT_ID like 'PG%' OR PROJECT_ID LIKE 'GG%')
AND ACCOUNT BETWEEN '40000' AND '79999'
AND ACCOUNTING_PERIOD <> 999
GROUP BY PROJECT_ID, CASE WHEN ACCOUNTING_PERIOD<900 THEN ACCOUNTING_PERIOD ELSE 900-ACCOUNTING_PERIOD END 
HAVING SUM(POSTED_BASE_AMT) <> 0
ORDER BY PROJECT_ID, CASE WHEN ACCOUNTING_PERIOD<900 THEN ACCOUNTING_PERIOD ELSE 900-ACCOUNTING_PERIOD END;
票数 0
EN

Stack Overflow用户

发布于 2018-12-21 03:19:39

看起来这就是你想要的:

代码语言:javascript
复制
SELECT PROJECT_ID, 
       ACCOUNTING_PERIOD, 
       SUM(POSTED_BASE_AMT) OVER 
         ( PARTITION BY MOD(Accounting_Period,100)
         ) as POSTED_AMT
FROM PS_LEDGER
WHERE LEDGER = 'ACTUALS'
AND FISCAL_YEAR = '2019'
AND (PROJECT_ID like 'PG%' OR PROJECT_ID LIKE 'GG%')
AND ACCOUNT BETWEEN '40000' AND '79999'
AND ACCOUNTING_PERIOD <> 999;
票数 0
EN

Stack Overflow用户

发布于 2018-12-28 02:38:31

来自Paul X的解决方案真的很有帮助,但我需要首先运行查询,并将已过帐的基本金额不求和,然后将其放入查询中的嵌套select中,如下所示:

选择PROJECT_ID,ACCOUNTING_PERIOD,SUM( POSTED_BASE_AMT )作为金额来源(SELECT PROJECT_ID,CASE WHEN ACCOUNTING_PERIOD >900 THEN ACCOUNTING_PERIOD - 900 ELSE ACCOUNTING_PERIOD END ACCOUNTING_PERIOD,POSTED_BASE_AMT FROM PS_LEDGER WHERE LEDGER = 'ACTUALS‘ACCOUNTING_PERIOD FISCAL_YEAR = '2019’AND (PROJECT_ID LIKE 'PG%‘或PROJECT_ID like 'GG%') AND ACCOUNT BY PROJECT_ID,ACCOUNTING_PERIOD ) GROUP BY PROJECT_ID,ACCOUNTING_PERIOD

具有按PROJECT_ID、ACCOUNTING_PERIOD排序的SUM(POSTED_BASE_AMT) <> 0;

感谢大家的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53874372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档