SQL SUM () через подзапрос - PullRequest
0 голосов
/ 17 января 2019

У меня есть таблица Ledger с этой схемой:

LedgerId    (int,not null)
Timestamp   (datetime, not null)
CostCenter  (int, not null)
Payee       (varchar(50), not null)
Type        (varchar(3),not null)
Category    (varchar(24), not null)
Amount      (decimal(8,2) not null)
Tag         (varchar(30),null)
Memo        (varchar(150), null)

, где я записываю расходные операции для малого бизнеса.

В конце года я должен отправить в IRS форму 1099 для любого подрядчика, получившего более 600 долларов США. Я запускаю следующий запрос (спасибо StackExchange!), Чтобы получить это:

SELECT Payee as Name, SUM(Amount)as Total FROM Ledger 
where (convert(date,timestamp) < convert(date,'2019-01-01')) 
and (convert(date,timestamp) > convert(date,'2017-12-31')) 
and category like '%Contract%' 
group by Payee having SUM(amount) > 600 
order by Payee

Это здорово, и дает мне список каждого подрядчика и общую сумму за 2018 год.

Теперь мне нужен запрос, который даст мне общую сумму, потраченную на этих подрядчиков в 2018 году (также для IRS, форма 1096). Если я использую этот запрос как подзапрос, чтобы получить эту общую сумму, я получаю ошибки. Как мне рассчитать все расходы подрядчика?

1 Ответ

0 голосов
/ 17 января 2019

Вы говорите, что это не работает?

select sum(total)
from (select Payee as Name, SUM(Amount) as Total 
      from Ledger 
      where timestamp < '2019-01-01' and
            timestamp >= '2018-01-01' and
            category like '%Contract%' 
      group by Payee
      having sum(amount) > 600 
     ) l;

Вам не нужно преобразовывать даты для логики, которую вы хотите реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...