Оператор SELECT с предложением MAX и WITH - PullRequest
0 голосов
/ 25 июля 2011

Таблица имеет схему TIMESTAMP, PATIENTID, ECGVALUE, и пример таблицы приведен ниже:

01.34 ANON 12
02.34 ANON 12
03.34 ANON 12
04.34 ANON 12
05.34 ANON 12
06.34 ANON 12
07.34 ANON 12
08.34 ANON 12
10.34 ANON 12
11.34 ANON 12
12.34 ANON 12

Теперь я хочу выбрать строки, которые на n или меньше максимальной отметки времени.Из таблицы выше мы видим, что для PATIENTID = 'ANON' максимальное значение TIMESTAMP составляет 12,34, теперь я хочу такой запрос SQL, чтобы shd мог выбирать все строки, которые 'n' меньше 12,34, где n может быть любым числом.Так далеко, я написал это, но это не работает.

WITH
rownums(TIMESTAMP, ECGVALUE, RN) AS (
SELECT TIMESTAMP, ECGVALUE ROW_NUMBER() OVER() AS RN
FROM EKLUND.DEV_RAWECG WERE PATIENID = 'ANON'
),
maxtime(MAXTM) AS (
SELECT MAX(TIMESTAMP) AS MAXTM FROM rownums
)
SELECT TIMESTAMP, ECGVALUE, RN FROM rownums
WHERE TIMESTAMP >= maxtime.MAXTM - 2;

Ответы [ 2 ]

0 голосов
/ 25 июля 2011

Вы не можете ссылаться на maxtime.MAXTM в своем предложении where, потому что вы не включили maxtime в свое предложение FROM.Вместо этого вам нужно изменить

WHERE TIMESTAMP >= maxtime.MAXTM - 2;

на

WHERE TIMESTAMP >= (select MAXTM from maxtime) - 2;
0 голосов
/ 25 июля 2011
SELECT * FROM `rownums` WHERE (`TIMESTAMP`+2)
    < (SELECT MAX(`TIMESTAMP`) FROM `rownums`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...