如何比较 SQL 服务器中的两个日期值?

How to compare two date values in SQL Server?

我有一个 table,日期是 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。

您似乎在寻找条件聚合:

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)

你可以这样做

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