我试图在表中总结与 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
但结果并不是我想要的。有人告诉我我必须使用嵌套查询,但我不知道该怎么做。 请,对于这个主题的任何启发将不胜感激。
我按照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;