Sql 按列分组以比较相似行之间的值
我正在努力扭转这种局面Sql 按列分组以比较相似行之间的值,sql,sql-server,Sql,Sql Server,我正在努力扭转这种局面 +----+---------+-------------------+-----------+ | id | year | desc | amount | +----+---------+-------------------+-----------+ | 1 | 2017 | car | 500 | | 2 | 2017 | car | 550
+----+---------+-------------------+-----------+
| id | year | desc | amount |
+----+---------+-------------------+-----------+
| 1 | 2017 | car | 500 |
| 2 | 2017 | car | 550 |
| 1 | 2018 | car | 490 |
| 2 | 2018 | car | 550 |
| 1 | 2017 | house | 200 |
| 2 | 2017 | house | 300 |
| 1 | 2018 | house | 210 |
| 2 | 2018 | house | 320 |
| 1 | 2019 | house | 290 |
| 2 | 2019 | house | 325 |
+----+---------+-------------------+-----------+
像这样的事情
+----+---------+---------+-------------------+-----------+-----------+
| id | year_0 | year_1 | desc | amount_0 | amount_1 |
+----+---------+---------+-------------------+-----------+-----------+
| 1 | 2017 | 2018 | car | 500 | 490 |
| 2 | 2017 | 2018 | car | 550 | 550 |
| 1 | 2017 | 2018 | house | 200 | 210 |
| 2 | 2017 | 2018 | house | 300 | 320 |
+----+---------+---------+-------------------+-----------+-----------+
但我很难按照描述将两年和两年的金额归为一组。您可以通过应用
join
获得结果:
SELECT A.id,a.year year_0,b.year year_1, A.[desc], A.amount amount_0,B.amount amount_1
FROM
(SELECT * FROM YourTable WHERE Year= Datepart(year,GETDATE())-1) AS A
INNER JOIN
(SELECT * FROM YourTable WHERE Year= Datepart(year,GETDATE())) AS B
ON A.id=B.id AND A.[desc]=B.[desc]
而且永远不会超过2年?谷歌“pivot sql server”。你也可以利用StackOverflow的优势。StackOverflow希望你这样做,我们也会这样做(如果你不询问硬件,请忽略)。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。欲了解更多信息,请参阅,并选择:)为什么2019号房屋不在结果中?