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