0

我曾尝试寻找解决方案,但可能错过了目前困扰我的问题的解决方案。

如何对另一列中的行相似的一列中的值求和?在 Excel 中,我知道 sumif() 函数可以给我完美的结果,但在 SQL 中我不能......

我有以下列 - 我想添加所有 'Article' 相同的 'OrderQty' 行:

Article                     Order       OrderQty 
5710986678708               931714523    2,00 
5710986678708               931714554    2,00 
5710986678708               931714532    2,00 
5710986678708               931714515    2,00 
5710987052460               954466387    1,00 
5710987052460               954466405    1,00 
5710987052460               954466404    1,00 
5710987052460               931714450    2,00 
5710987052460               931714482    2,00 
5710987052460               931714472    2,00 
5710987052460               931714474    1,00 
5710986678692               954466466    2,00 
5710986678692               954466483    1,00 
5710986678692               954466484    2,00 
5710986678692               954466464    1,00 
5710986678692               954466501    1,00 
5710986678692               954466473    1,00  

我的输出应该是这样的:

Article                     Order    OrderQty    TotalOrdered 
5710986678708               931714523    2,00    8,00 
5710986678708               931714554    2,00    8,00 
5710986678708               931714532    2,00    8,00 
5710986678708               931714515    2,00    8,00 
5710987052460               954466387    1,00    10,00 
5710987052460               954466405    1,00    10,00 
5710987052460               954466404    1,00    10,00 
5710987052460               931714450    2,00    10,00 
5710987052460               931714482    2,00    10,00 
5710987052460               931714472    2,00    10,00 
5710987052460               931714474    1,00    10,00 
5710986678692               954466466    2,00    8,00 
5710986678692               954466483    1,00    8,00 
5710986678692               954466484    2,00    8,00 
5710986678692               954466464    1,00    8,00 
5710986678692               954466501    1,00    8,00 
5710986678692               954466473    1,00    8,00

在Excel中我会做 - 假设'Article'是A列:
=Sumif('Article';'A2';'OrderQty')

我尝试过使用 Case 语句,但在“TotalOrdered”列中,它返回与“OrderQty”相同的数量 - 在行级别上而不是在文章级别上求和。

有什么帮助吗?

谢谢, C

4

1 回答 1

1

有几种方法可以做到这一点。使用 ANSI 标准窗口函数是最简单的:

select t.*, sum(OrderQty) over (partition by ArticleId) as TotalOrdered
from mytable t;

如果您的数据库不支持此功能,您仍然可以这样做。例如,您可以使用group byjoin/或相关子查询。这是一个带有相关子查询的示例:

select t.*,
       (select sum(OrderQty)
        from mytable t2
        where t2.ArticleId = t.ArticleId
       ) as TotalOrdered
from mytable t;
于 2014-08-06T11:11:10.470 回答