繁体   English   中英

SQL 分区计算净值

[英]SQL Partition By to calculate Net Value

想象一个订单系统,有多个订单,两边分别是买入和卖出。 数据集如下所示

样本结构

我想计算净值,即(所有买方的总和 - 所有卖方的总和)

预期 output:

预期的

我目前已使用 Partition By 到达以下 output

SELECT 
[NAME]
,[Side]
,[Value]
,SUM([Value]) OVER (PARTITION BY [NAME],[Side]) as Net
FROM 
[Order]

Output:

在此处输入图像描述

但是我不知道如何减去这些值并得出预期的结果。

您可以将 window 函数与条件逻辑一起使用

select
    t.*,
    sum(case side when 'B' then value when 'S' then -value end) 
        over(partition by name) net
from mytable t

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM