将符合条件的行相加,将不在同一查询中的其他行相加

时间:2018-10-22 08:45:23

标签: sql count nested sum

我正在尝试在表中汇总与条件匹配的所有行(如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 

但是结果不是Iam想要的。有人高个子我必须使用嵌套查询,但是我不知道该怎么做。 请在这个问题上的任何亮光将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢您的时间,对于我的问题中缺少细节或澄清的内容,我们深表歉意。我已经按照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;

这样,我得到了想要的结果。