繁体   English   中英

如何在带有 where 子句的 sql 查询中获取最新的日期时间记录?

[英]How to get the latest date time record in an sql query with a where clause?

我有两个表: RO_LAMEL_DATARO_MAIN_TABLE RO_MAIN_TABLE包括具有记录键 ( record_key ) 的产品的所有序列号 ( serial_nr )。 RO_LAMEL_DATA为每个记录键(例如机器状态( machine_status )和日期时间值( pr_date_time )有几条记录(在同一天)。 我想获得一个生产的最新机器状态。 为此,我这样做:

select a.machine_status
from ro_lamel_Data a inner join (
    select record_key, max(pr_date_time) as MaxDate
    from ro_lamel_Data
    group by record_key
) ro_main_table on (a.record_key = ro_main_table.record_key) and a.pr_date_time = MaxDate
where a.record_key =(
    select record_key from ro_main_table where serial_nr = 'Y39489');


但是我得到了错误:

单行子查询返回多于一行

我该如何解决这个问题? 提前致谢!

也许你需要类似的东西

WITH cte AS ( SELECT machine_status, 
                     record_key,
                     ROW_NUMBER() OVER (PARTITION BY record_key 
                                        ORDER BY pr_date_time DESC) rn
              FROM ro_lamel_Data )
SELECT cte.record_key, cte.machine_status last_status
FROM cte 
JOIN ro_main_table ON cte.record_key = ro_main_table.record_key
WHERE rn = 1

小提琴

如果你想要一行,使用order byfetch first

select ld.machine_status
from ro_lamel_Data ld join
     ro_main_table mt
     using (record_key)
where mt.serial_nr = 'Y39489'
order by ld.pr_ate_time desc
fetch first 1 row only;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM