2013-06-11 4 views
0

Я пытаюсь получить последнее значение из таблицы оракула на основе имени сервера. У меня есть следующий код:как получить последнее значение из таблицы оракула

SELECT T."Node",T."Timestamp",T."MAX_User_CPU_Pct", T."MAX_System_CPU_Pct" 
FROM DW.KPX_CPU_DETAIL_HV T where T."Node"='serverA%' and T."Timestamp"= 
(select max(P."Timestamp") from DW.KPX_CPU_DETAIL_HV P where P."Node"='serverA%') 

это не работает, любые идеи, что я могу делать неправильно здесь?

+2

«* похоже, что не работает» * недействителен сообщение об ошибке Oracle. –

+0

Хотя это вряд ли ускорит ваш запрос, мне кажется, что «P.« Node »=« serverA% »должен быть« P. »Node« like »serverA%» - это проблема с вашим существующим запрос, что он не возвращает никаких записей? –

+0

SQL выглядит хорошо. Он должен работать. –

ответ

0
SELECT T."Node",T."Timestamp",T."MAX_User_CPU_Pct", T."MAX_System_CPU_Pct" 
FROM (SELECT * FROM DW.KPX_CPU_DETAIL_HV T where T."Node" like 'serverA%' ORDER BY T."Timestamp" DESC) T 
WHERE ROWNUM = 1 

это сделал для меня, не уверен, что это лучшее решение, но работает Теперь.

0

Попробуйте это, может быть на самом деле быстрее, чем к югу от выбора (даже если это было правильно):

SELECT T."Node", 
     T."Timestamp", 
     T."MAX_User_CPU_Pct", 
     T."MAX_System_CPU_Pct" 
FROM (
    SELECT p.*, 
     row_Number() over (partition by p."Node" order by p."Timestamp" desc) as rn 
    FROM DW.KPX_CPU_DETAIL_HV p 
) t 
where rn = 1; 
+0

это также занимает очень много времени. Мне нужно, чтобы это было очень быстро. – user1471980

+1

@ user1471980: покажите нам план выполнения и определение таблицы, включая любой индекс. Измените свой вопрос, не публикуйте это как комментарий. –

Смежные вопросы