我已经在这方面工作太久了,而且我对子查询知识仍然不太了解。我正在使用 TSQL。
我需要每个 Entityuid 的 MaxLastInspDate 以及其他列(问题、答案和 QuestionID,其中 QuestionID = 6412)。
我尝试过联合、子查询和简单的最大查询。 Bing CoPilot 的功能也不太好用。我尝试过,但总是遇到重复或过滤问题。
这是我遇到的问题,我没有过滤所有最大日期。即
去年 | 最后日期 | 实体UID | 问题ID | 回答 |
---|---|---|---|---|
2023 | 6/6/23 8:09 上午 | CE-A4-007 | 6412 | 破损开裂/需要灌浆 |
2024 | 12/4/23 下午 3:56 | CE-A4-007 | 6412 | 好 |
这是我的询问:
SELECT DISTINCT MAX(FY) AS LastYear, MAX(LastInspDate) AS LastDate, ENTITYUID, QUESTIONID, ANSWER
FROM dbo.ssmh_inspection_124jc
GROUP BY ENTITYUID, QUESTIONID, ANSWER
HAVING (QUESTIONID = 6412)
我们可以在这里使用
ROW_NUMBER
:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY YEAR(FY) ORDER BY LastInspDate DESC) rn
FROM dbo.ssmh_inspection_124jc
)
SELECT YEAR(FY) AS LastYear, LastInspDate AS LastDate, ENTITYUID, QUESTIONID, ANSWER
FROM cte
WHERE rn = 1
ORDER BY YEAR(FY);