小编典典

如何显示加在一起等于零的行

sql

一直在寻找解决方案的几个星期,但一直空白。

我有与此类似的数据表:

client_ref  supplier_key  client_amount
1111        GBP           10
1111        GBP           -10
1111        EUR           50
2222        CHF           -22.5
2222        CHF           -20
3333        EUR           -27
3333        EUR           -52
3333        EUR            79

我需要提取client_ref和Supplier_key匹配且client_amount的总数等于零的所有项目。输出如下所示:

client_ref  supplier_key  client_amount
1111        GBP           10
1111        GBP           -10
3333        EUR           -27
3333        EUR           -52
3333        EUR            79

我写了以下返回总计的内容,但我需要您提供任何帮助以更改此内容,以显示组成总计的行,而不仅仅是总结果。

SELECT tbis.client_ref ,tbis.supplier_key ,sum(tbis.client_amount) 
FROM [XXXX].[dbo].[transaction] tbis 
WHERE tbis.tbis.client_amount !=0 
GROUP BY tbis.client_ref, tbis.supplier_key 
HAVING sum(tbis.client_amount) =0 
ORDER BY sum(tbis.client_amount)

希望这有道理,我的第一篇文章还可以。请随时批评我的帖子。


阅读 183

收藏
2021-04-14

共1个答案

小编典典

一种可能的方法是使用SUM()窗口函数:

SELECT * 
FROM
( SELECT tbis.client_ref ,tbis.supplier_key,tbis.client_amount,
  SUM(tbis.client_amount) OVER (
    PARTITION BY tbis.client_ref, tbis.supplier_key) AS total_client_amount
  FROM [XXXX].[dbo].[transaction] tbis 
  WHERE tbis.client_amount !=0 
)
WHERE total_client_amount = 0
2021-04-14