Вопрос Microsoft SQL запрос SQL - PullRequest
0 голосов
/ 16 сентября 2009

Я совершенно новичок в Microsoft Query.

У меня определены следующие таблицы:

FLEET_MASTERS Table        
- REG_NO
- FMS_ID

ODOMETERS Table                           
- ODO_ID 
- FMS_ID

ODOMETERS_READING Table
- ODO_ID          
- ODO_READING
- ODO_READING_DATE
- ODO_READING_TYPE

Мне нужна эта информация:

REG_NO, ODO_READING, max(ODO_READING DATE), ODO_READING_TYPE 

Но из одного REG_NO может быть несколько ODO_READING и ODO_READING DATE, мне просто нужен ODO_READING с самым последним ODO_READING DATE.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2009

Из вашего беспорядка текста выше я предполагаю следующую схему

CREATE TABLE FLEET_MASTERS
(
    FMS_ID INT PRIMARY KEY,
    REG_NO VARCHAR(10)
)
CREATE TABLE ODOMETERS_READING
(
    OMR_ID INT PRIMARY KEY,
    FMS_ID INT,
    ODO_READING INT,
    ODO_READING_DATE DATETIME,
    ODO_READING_TYPE INT
)

Учитывая эту схему, следующий запрос даст вам то, что вы хотите, при условии, что на Reg_No имеется только одна запись для данной даты / времени:

SELECT
    FM.REG_NO,
    OMR.ODO_READING,
    OMR.ODO_READING_DATE,
    OMR.ODO_READING_TYPE
FROM FLEET_MASTERS FM
INNER JOIN ODOMETERS_READING OMR
    ON FM.FMS_ID = OMR.FMS_ID
WHERE OMR.ODO_READING_DATE = (
    SELECT MAX(OMR1.ODO_READING_DATE)
    FROM ODOMETERS_READING OMR1
    WHERE OMR1.FMS_ID = FM.FMS_ID
)

Я думаю, что у меня правильный синтаксис, все из головы, нет SQL-сервера, удобного для его тестирования.

0 голосов
/ 16 сентября 2009

Попробуйте:

select fm.REG_NO, odr.ODO_READING, odr.ODO_READING_DATE as MAX_READING_DATE, odr.ODO_READING_TYPE
from FLEET_MASTERS fm
inner join ODOMETERS od on fm.FMS_ID = od.FMS_ID
inner join  (
    select ODO_ID, max(odr.ODO_READING_DATE) as MAX_READING_DATE
    from ODOMETERS_READING
    group by ODO_ID
) odm
inner join ODOMETERS_READING odr on odm.ODO_ID = odr.ODO_ID and odm.MAX_READING_DATE = odr.ODO_READING
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...