Суммируйте строки, которые соответствуют условию и другим, которые не в том же запросе - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь суммировать в таблице все строки, которые соответствуют условию как 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 

Но результат не тот, который я ищу.Кто-то сказал мне, что я должен использовать вложенный запрос, но я не знаю, как это сделать.Пожалуйста, любой свет в этой теме будет принят с благодарностью.

1 Ответ

0 голосов
/ 24 октября 2018

спасибо за ваше время и извините за отсутствие деталей или уточнений в моем вопросе.Я уже решил проблему с помощью сводной таблицы, следуя примеру в 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;

Таким образом, я получил результаты, которые искал.

...