我正在向 IBM DB2 服务器写入以下查询:
SELECT
EMPNO,
YEAR(CURRENT TIMESTAMP - BIRTHDATE) AS AGE,
DENSE_RANK() OVER(ORDER BY YEAR(CURRENT TIMESTAMP - BIRTHDATE) ASC) AS RANK
FROM
DANDY.EMPLOYEE;
它有效,但看起来很丑,因为我正在重复表达式:
YEAR(CURRENT TIMESTAMP - BIRTHDATE)
但是这样写是行不通的:
DENSE_RANK() OVER(ORDER BY AGE ASC) AS RANK
如何让它变得更好?
最佳答案
SELECT
EMPNO,
AGE,
DENSE_RANK() OVER(ORDER BY AGE ASC) AS RANK
FROM (SELECT EMPNO,
YEAR(CURRENT TIMESTAMP - BIRTHDATE) AS AGE
FROM DANDY.EMPLOYEE);
关于sql - 如何重构这个 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809002/