I have two tables : RO_LAMEL_DATA
and RO_MAIN_TABLE
. RO_MAIN_TABLE
includes all the serial numbers (serial_nr
) for the productions which have a record key (record_key
). RO_LAMEL_DATA
has several records (on the same day) for each record key such as machine status (machine_status
) with a date time value (pr_date_time
). I want to get the latest machine status of one production. For this I do:
x
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');
However I get the error:
single-row subquery returns more than one row
How can I solve this? Thanks in advance!
Advertisement
Answer
Maybe you need something like
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