[英]How to sum multiple rows with specific criteria in SQL
I have a query to sum balances by Product below:我有一个查询要按以下产品汇总余额:
SELECT BCM_CORPORATION_NUMBER, BCM_PRODUCT
SUM(BCM_TOT_NEW_BAL) AS TOTAL_BALANCE
FROM BCM_IN
GROUP BY BCM_CORPORATION_NUMBER, BCM_PRODUCT
ORDER BY BCM_CORPORATION_NUMBER ASC;
Results :结果:
Corp. PRODUCT. TOTAL_BALANCE
002030. VCLBUS. 3000
002030. VGOBUS. 1000
002030. VCL000. 4000
I want to combine the totals for Products VCLBUS & VGOBUS to display a total of 4000 together without the VCL000 product.我想将产品 VCLBUS 和 VGOBUS 的总数结合起来,在没有 VCL000 产品的情况下显示总共 4000 个。
To look like this: Corp. PRODUCT.看起来像这样:Corp. PRODUCT。 TOTAL_BALANCE 002030. VCLBUS/VGOBUS. TOTAL_BALANCE 002030。VCLBUS/VGOBUS。 4000 002030. VCL000. 4000 002030. VCL000。 4000 4000
Is this what you want?这是你想要的吗?
SELECT BCM_CORPORATION_NUMBER, SUM(BCM_TOT_NEW_BAL) AS TOTAL_BALANCE
FROM BCM_IN
WHERE BCM_PRODUCT IN ('VCLBUS', 'VGOBUS')
GROUP BY BCM_CORPORATION_NUMBER
ORDER BY BCM_CORPORATION_NUMBER ASC;
Or you may what:或者你可以:
WHERE BCM_PRODUCT <> 'VCL000'
Here's your query.这是您的查询。
SELECT t1.BCM_CORPORATION_NUMBER, t1.BCM_PRODUCT, SUM(t1.TOTAL_BALANCE)
FROM (SELECT BCM_CORPORATION_NUMBER, BCM_PRODUCT
SUM(BCM_TOT_NEW_BAL) AS TOTAL_BALANCE,
FROM BCM_IN
GROUP BY BCM_CORPORATION_NUMBER, BCM_PRODUCT
) t1
WHERE t1.BCM_PRODUCT IN ('VCLBUS', 'VGOBUS')
ORDER BY t1.BCM_CORPORATION_NUMBER ASC
or或者
SELECT BCM_CORPORATION_NUMBER
, BCM_PRODUCT
, BCM_TOT_NEW_BAL
, SUM(BCM_TOT_NEW_BAL) AS TOTAL_BALANCE
FROM BCM_IN
WHERE BCM_PRODUCT IN ('VCLBUS', 'VGOBUS')
GROUP BY BCM_CORPORATION_NUMBER, BCM_PRODUCT, BCM_TOT_NEW_BAL
ORDER BY BCM_CORPORATION_NUMBER ASC;
Suppose your Output
is in Temp table or CTE
假设您的Output
在 Temp 表或CTE
中
create table #Output(Corp varchar(15),PRODUCT varchar(50),TOTAL_BALANCE int)
insert into #Output
SELECT BCM_CORPORATION_NUMBER, BCM_PRODUCT
SUM(BCM_TOT_NEW_BAL) AS TOTAL_BALANCE
FROM BCM_IN
GROUP BY BCM_CORPORATION_NUMBER, BCM_PRODUCT
;
OR或者
;With OutPutCTE
(
SELECT BCM_CORPORATION_NUMBER, BCM_PRODUCT
SUM(BCM_TOT_NEW_BAL) AS TOTAL_BALANCE
FROM BCM_IN
GROUP BY BCM_CORPORATION_NUMBER, BCM_PRODUCT
--ORDER BY BCM_CORPORATION_NUMBER ASC
)
Suppose, like you want to group 'VCLBUS', 'VGOBUS'
Similarly you will want to Sum GROUP
other Product and SUM
them accordingly.假设,就像您想对'VCLBUS', 'VGOBUS'
SUM
GROUP
一样,您将希望对其他产品进行求和并相应地求和它们。
Create #temp table and store product according to their group根据他们的组创建#temp表并存储产品
create table #GroupType(PRODUCT varchar(50),groupid int)
insert into #GroupType values
('VCLBUS.',1)
,('VGOBUS.',1)
,('VCL000.',2)
select o.*
,sum(TOTAL_BALANCE)over(partition by g.groupid )Group_TOTAL_BALANCE
from #Output O
inner join #GroupType G on o.PRODUCT=g.PRODUCT
I think you can get the whatever output you want.我想你可以得到你想要的任何 output。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.