2013-08-16 8 views
3

У меня есть небольшая база данных с данными ежедневных параметров погоды. Это Microsoft SQL Server 2008 Express DatabaseПрисоединиться к DateTime и последнему значению из другой таблицы

Мои таблицы следующим образом:

station (id, name, position) 
reading (station_id, timestamp, value) 
--station_id is the foreign key to id in station table 

Я хочу их присоединиться и получить результат, как показано ниже:

id  | name | value | time 
--------+---------+------------------------- 
0  | lake | 73  |2013/08/16 02:00 
1  | pier | 72  |2013/08/16 02:00 
2  | gate | 81  |2013/08/16 02:00 

Глядя на вопрос, как Join to only the "latest" record with t-sql , Я смог получить только одну строку из первой таблицы и используя Join two tables, only use latest value of right table, мне удалось получить только максимальное время со второй таблицы.

Как я могу получить вывод, который я хочу?

ответ

2

Это может быть сделано с помощью подзапроса

SELECT s.id, 
     s.name, 
     r.value, 
     r.timestamp 

FROM station as s 
     INNER JOIN reading as r 
     on s.id = r.station_id 

WHERE r.timestamp = (

    SELECT max(timestamp) 
    FROM reading 
    where reading.station_id = s.station_id 

) 
1
SELECT STATION.ID,STATION.Name,T2.timestamp,T2.Value 

FROM STATION 
LEFT JOIN 
(
    SELECT station_id,timestamp, value 
    FROM 
    (
    SELECT station_id,timestamp, value, 
     ROW_NUMBER() OVER (PARTITION BY station_id ORDER BY timestamp DESC) as rn 
    FROM reading 
) as T1 
    WHERE RN=1 
) as T2 on STATION.ID=T2.station_id 
+0

Это дает мне ошибку: Некорректный синтаксис около 'PARTITON' –

+1

должен быть PARTITION – Hazaart

+0

@DevdattaTengshe: Исправлено. Да, по договоренности – valex

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