首页 > 解决方案 > SQL Server SELECT SUM 语句

问题描述

请帮忙!我需要帮助。

我正在尝试创建一个 SQL Server 语句;OUTPUT 是 New Items (1+2) 和 RENEW (3+4+5+6) 的总和。“NEW_SUM”的总金额将相加,直到达到“RENEW”值。

桌子:

物品 细节 Detail_Type 数量
1234 ABC01 新__SUM 1美元
1234 ABC02 继续__和 2美元
1234 ABC03 RENEW_SUM 3 美元
1234 ABC04 继续__和 4 美元
1234 ABC05 继续__和 5 美元
1234 ABC06 继续__和 6 美元

期望的输出:

物品 Detail_Type 数量
1234 新__SUM 3 美元
1234 RENEW_SUM 18 美元

标签: sqlsql-server

解决方案


这回答了问题的原始版本。

您似乎想根据中的顺序对行进行分组DETAIL。该组以非'CONT'值开始。如果是这样,只需使用窗口函数和聚合:

select item,
       max(case when detail_type <> 'CONT' then detail_type end) as detail_type,
       sum(amount)
from (select t.*,
             sum(case when detail_type <> 'CONT' then 1 else 0 end) over (partition by item order by detail) as grp
      from t
     ) t
group by item, grp;

推荐阅读