sql - 显示最近的笔记
问题描述
我的任务是显示来自以下查询的最新注释。
SELECT repair.jobnumber
,repair.jobname
,property.address
,n.memnote
,repair.DATE
,property.propertypk
FROM property
LEFT JOIN repair ON repair.propertyfk = property.propertypk
LEFT JOIN (
SELECT memnote
,max(DATE) AS DATE
,notetype
,notepk
,propertyfk
FROM note
WHERE notetype = 'PS'
GROUP BY memnote
,notetype
,notepk
,propertyfk
) n ON n.propertyfk = property.propertypk
WHERE repairtype = 'garden'
但它仍然显示所有类型为 PS 的注释,而不是每次维修和最近的不在物业上的注释。
解决方案
使用row_number()
:
select r.jobnumber, r.jobname, p.address, n.memnote, r.date, p.propertypk
from property p join
repair r
on r.propertyfk = p.propertypk left join
(select n.*, row_number() over (partiiton by n.propertypk order by n.date desc) as seqnum
from note
where notetype = 'PS'
) n
on n.propertyfk = p.propertypk and n.seqnum = 1
where r.repairtype = 'garden';
注意:您repairtype
在where
子句中进行过滤,所以我将其更改join
为内部连接。如果您想要所有属性,则将该条件移至on
并使用left join
。
推荐阅读
- java - Kotlin float -> 字符串转换问题(也是 Java)
- sql - Linq - 2 列无条件
- php - 使用 Laravel 5.2 在数据表上出现 Ajax 错误
- ionic-framework - 从 api 渲染离子组件的问题
- objective-c - 从可可 OS X 应用程序上传 AWS s3 图像
- 3d - 如何找到定向边界框的旋转角度?
- database - Eloquent 的问题:未定义的函数:7 错误:运算符不存在
- python - 如何让列表循环直到它为空或python中列表(字典)中的一个值
- python - SciPy:为具有对数频率标度的音频制作频谱图并从中恢复原始信号
- .net - .NET 如何在 OIDC 中间件中访问 DBContext