如何在SQL Server中比较两个日期值?

问题描述 投票:0回答:2

我有一个表格,日期为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。

sql sql-server tsql sql-server-2005 ssms
2个回答
0
投票

您似乎正在寻找条件聚合:

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)

0
投票

您可以作为

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;
© www.soinside.com 2019 - 2024. All rights reserved.