Как сравнить два значения даты в SQL Server? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица с датой 2018 и датой 2019, и вот мои данные.

select amount, date 
from TABLE1 
where date in (2018, 2019) and empid = 21120

Это не сработало для меня, так как в запросе указан случай, когда дата = 2019, а затем сумма как мои данные выше, когда дата = 2019, он просто покажет мне сумму. Вот каков мой результат:

Amount     Data         
9.67       2019     
21         2019         
6          2019        
9.56       2018     
42         2018         
7          2018         

Что нужно: разница между суммой за две даты 2018 и 2019.

Приведенный выше запрос дает мне только одну строку сумма на эти даты.

Мой ожидаемый результат - найти разницу в сумме между 2018 и 2019 годами. Любые идеи о том, как я могу получить разницу. Я пытаюсь самостоятельно присоединиться, но любая помощь приветствуется.

Например: 2019 сумма 9,67 - 2018 сумма 9,56.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Вы можете сделать как

SELECT ABS(SUM(CASE WHEN Data = '2019' THEN Amount ELSE -Amount END)) Diff
FROM
(
  VALUES
  (9.67       , '2019'),     
  (21         , '2019'),         
  (6          , '2019'),        
  (9.56       , '2018'),     
  (42         , '2018'),         
  (7          , '2018') 
) T(Amount, Data)
WHERE Data IN ('2018', '2019')
      -- AND empid = 21120; Uncomment this when you run it against your table
0 голосов
/ 20 марта 2020

Вы, похоже, ищете условную агрегацию:

select
    sum(case when date = 2019 then amount else 0 end)
    - sum(case when date = 2018 then amount else 0 end) diff
from mytable
where empid = 21 and date in (2018, 2019)

Запрос показывает разницу между общей суммой 2019 и 2018 для данного сотрудника.

Это может немного укоротим:

select sum(case when date = 2019 then amount else -amount end) diff
from mytable
where empid = 21 and date in (2018, 2019)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...