首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件在Server中添加下一行和减去前一行

如何根据条件在Server中添加下一行和减去前一行
EN

Stack Overflow用户
提问于 2019-08-10 01:59:43
回答 1查看 398关注 0票数 1

我正在尝试根据Server中的TranslationType列计算累积和。

样本数据:

代码语言:javascript
复制
Id  TransactionType Value
-------------------------
1   Receipt          10
2   Issue             2
3   Receipt          10
4   Issue             5
5   Issue             3

我试过了,但我有一个问题,我得到的输出是错误的:

代码语言:javascript
复制
Id  TransactionType DiffValue
-----------------------------
1   Receipt          10
2   Issue             8
3   Receipt          22
4   Issue             5
5   Issue             2

差值的期望输出:

代码语言:javascript
复制
Id  TransactionType  Value  DiffValue
---------------------------------------
1   Receipt           10        10
2   Issue              2         8  if issue then 10-2
3   Receipt           10        18  if receipt then 10+8 
4   Issue              5        13  if issue then 18-5
5   Issue              3        10  if issue then 13-3

SQL创建脚本:

代码语言:javascript
复制
DROP TABLE #Temp 

CREATE TABLE #Temp
(
    Id INT,
    TransactionType VARCHAR(50),
    value INT,
)

INSERT INTO #Temp (Id, TransactionType, value)
VALUES (1, 'Receipt', 10), (2, 'Issue', 2), (3, 'Receipt', 10),
       (4, 'Issue', 5), (5, 'Issue', 3)

SELECT * FROM #Temp

我的查询尝试:

代码语言:javascript
复制
SELECT
    Id,
    TransactionType,
    CASE 
       WHEN TransactionType = 'Receipt' 
          THEN SUM(value) OVER (ORDER BY Id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)  
       ELSE LAG(value) OVER (ORDER BY Id)  - value
    END AS DiffValue
FROM
    #Temp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-10 02:04:06

您应该对一个可以区分借方和贷方的CASE表达式进行求和:

代码语言:javascript
复制
SELECT 
    Id,
    TransactionType,
    SUM(CASE WHEN TransactionType = 'Receipt' THEN value ELSE -1.0*value END)
        OVER (ORDER BY Id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS DiffValue
FROM #Temp
ORDER BY Id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57438741

复制
相关文章

相似问题

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