求开始累计、年初到本期累计的SQL

该博客探讨了如何在SQL中计算成本状态表(cs_f_CostStatus)中实际产值(actAmt)、计量(balAmt)和回款(recAmt)的年累计和开累计。给出了三种不同的SQL查询方法,包括一次性计算年累和开累,仅计算开累,以及仅计算年累。每种方法都通过内连接操作并根据特定条件进行求和,然后按costKPIKey、orgKey和dayKey进行分组。
摘要由CSDN通过智能技术生成

CREATE TABLE cs_f_CostStatus(
 [costKPIKey] [int] NULL,
 [orgKey] [int] NULL,
 [dayKey] [int] NULL,
 [actAmt] [numeric](19, 6) NULL,
 [balAmt] [numeric](19, 6) NULL,
 [recAmt] [numeric](19, 6) NULL,
)
在以上表结构,求实际产值actAmt、计量balAmt、回款recAmt的年累、开累,其中dayKey以200904的数字形式表示年月。

现有以下SQL,评价性能等方面的优缺点.
--一次求年累开累
select cs1.costKPIKey, cs1.orgKey, cs1.dayKey, sum(cs2.actAmt) as actAmtSum,
sum(cs2.balAmt) as balAmtSum, sum(cs2.recAmt) as recAmtSum,
sum(CASE WHEN (cs1.dayKey-(cs1.dayKey % 100)<=cs2.dayKey) THEN cs2.actAmt ELSE 0 END) as actAmtSumYear,
sum(CASE WHEN (cs1.dayKey-(cs1.dayKey % 100)<=cs2.dayKey) THEN cs2.balAmt ELSE 0 END) as balAmtSumYear,
sum(CASE WHEN (cs1.dayKey-(cs1.dayKey % 100)<=cs2.dayKey) THEN cs2.recAmt ELSE 0 END) as recAmtSumYear
from cs_f_CostStatus cs1
inner join cs_f_CostStatus cs2
on (cs1.costKPIKey=cs2.costKPIKey) and (cs1.orgKey&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值