对同一查询中匹配条件的行和其他不匹配的行进行求和

问题描述 投票:0回答:1

我试图在表中总结与 OpenOrder 条件匹配的所有行和不匹配的行。 现在,我有一个显示所有条件的查询

    select count(fk_OrderType)OrderCount, OrderName
from TrainingOrders group by fk_ActionTrainingType

此查询显示一个表,其中:

OrderName  OrderCount
A            10
B            5
C            7
D            3

我想要的是这个:

OrderName   ORderCount
A             10
E             15 (B+C+D)

我试过这个

select sum(case when fk_OrderType= 45175 then 1 else 0 end) OpenOrder,
  sum(case when fk_OrderType<> 45175 then 1 else 0 end) NoOpenOrder
from TrainingOrders 

但结果并不是我想要的。有人告诉我我必须使用嵌套查询,但我不知道该怎么做。 请,对于这个主题的任何启发将不胜感激。

sql count nested sum
1个回答
1
投票

我按照https://www.sqlshack.com/es/multiples-opciones-para-transponer-filas-en-columnas/

中的示例使用数据透视表解决了这个问题
SELECT *
FROM
(
   select JobName,count(fk_OrderType)OrderCount, OrderName
from TrainingOrders group by fk_ActionTrainingType 
) AS SourceTable PIVOT(sum([OrderCount]) FOR [OrderName] IN([A],
                                                         [B],
                                                         [C],
                                                         [D],
                                                         [E])) AS PivotTable 
order by JobName;
© www.soinside.com 2019 - 2024. All rights reserved.