Объединение одинаковых результатов в SQL Server - PullRequest
0 голосов
/ 31 октября 2019

Итак, у меня есть 2 таблицы. Первая таблица содержит претензии. Каждая претензия имеет уникальный идентификатор. К каждой заявке может быть приложено несколько записей. К записям также прикреплены коды ошибок. Каждая заявка может иметь только 1 код ошибки, который, опять же, указан в записи. То, что я пытаюсь сделать, это выбрать мои претензии на основе errorCode. Возвращенный результат будет выглядеть примерно так:

rID  |   errorCode  | total amount for error Code  | total amount of claims that have the error code. 

В моих текущих результатах перечисляются все уникальные заявки, но отображаются заявки для каждого кода ошибки с соответствующей суммой. Следует объединить суммы и количество кодов ошибок в один столбец. Как я могу сделать это? Вот код, который я сейчас использую, а также снимок того, как он выглядит в SQL с моими результатами. Мы очень ценим любую помощь.

SELECT 
  rID, 
  (SELECT TOP 1 errorCode FROM entries e WHERE e.rID=c.rID) as ec, 
  round((SELECT SUM(refundDue) FROM entries WHERE rID=c.rID),0) as amount 

  FROM claims c WHERE status='closed' AND c.auditorID='101' AND (c.dateon >= '20191018' AND c.dateon < '20191025') ORDER BY ec asc

current sql results

Исходя из этого изображения, результаты должны выглядеть примерно так:

ECTotal   |  EC   |  amount
_______     _____   ________
   1         AI      600.00
   2         CI      4494.00
  10         CL      12654.00
   3         DN      11138.00
   2         RB      893.00
   3         RT      15256.00
   1         WA      567.00
   1         WP      2488.00
   1         WT      2378.00

1 Ответ

1 голос
/ 31 октября 2019

Я думаю, вам просто нужна группа. ,?

не проверено

SELECT count(distinct c.rid) ECTotal, e.errorcode ec,
   round(SUM(refundDue),0) as amount
FROM claims c
inner join entries e on e.rid=c.rid
WHERE c.status='closed'
   AND c.auditorID='101'
   AND (c.dateon >= '20191018' AND c.dateon < '20191025')
GROUP BY e.errorcode
ORDER BY e.errorcode asc
...