sql - 查找上一行和当前行之间的差异

标签 sql sql-server sql-server-2012

我有一个表演示者

enter image description here

我想找出主持人工资之间的差异。喜欢(Jason - Vicki、Jason - Tiff、Vicki - Tiff)。

我有以下代码

SELECT 
    P2.PNRFNAME, P1.PNRFNAME AS "pnrfname",
    P2.SALARY_YEARLY - P1.SALARY_YEARLY AS "salary difference" 
FROM 
    PRESENTERS P2
JOIN 
    PRESENTERS P1 ON P2.PNRFNAME > P1.PNRFNAME
ORDER BY 
    "salary difference"

这些是结果

enter image description here

但我想要以下结果

enter image description here

最佳答案

如果您的行按 PRESENTERID 排序,则可以使用 PRESENTERID,而不是执行 P2.PNRFNAME > P1.PNRFNAME

尝试;

SELECT P2.PNRFNAME ,P1.PNRFNAME AS "pnrfname" , P2.SALARY_YEARLY - P1.SALARY_YEARLY AS "salary difference" 
FROM PRESENTERS P2
INNER JOIN PRESENTERS P1
ON P2.PRESENTERID> P1.PRESENTERID
ORDER BY P2.PRESENTERID, P1.PRESENTERID

关于sql - 查找上一行和当前行之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39312529/

相关文章:

mysql - 使用 "LIMIT 1"是否可以加快对主键的查询?

SQL Server、远程存储过程和 DTC 事务

sql-server - 在持续部署中设置 DacUpgradeOptions.IgnoreDataLoss 标志的最佳实践?

T-SQL 2012,While 循环最大迭代次数?

sql - 错误 SQL Server 2012 : Parameters were not supplied for the function X

php - MySQL,链接数据

java - 与使用普通 JDBC 相比,MyBatis 有什么好处

php - MySQL 内联外键不应用限制

mysql - 仅用 1 个请求替代 2 个 SQL/ORACLE 请求

ssis - 我如何找到 `Data Warehouse` 的哪些记录必须根据 CDC 捕获的更改进行更新?