2009-11-04 3 views
2

У меня есть запрос (A), который может возвращает несколько строк в хронологическом порядке:T-SQL: Обновление первой строки записей

SELECT encounter_id, department_id, effective_time 
FROM adt 
WHERE event_type IN (1,3,7) 
ORDER BY effective_time 

У меня есть другой запрос (B), который возвращает одну строку:

SELECT encounter_id, department_id, arrival_time 
FROM ed 
WHERE event_type = 50 

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

Я понимаю, что я мог бы сделать это с помощью CURSOR, но я надеялся использовать функцию row_number() T-SQL.

+0

ли данные в наборе результатов A в любом случае связаны с результатом в B? Кроме того, что/какие поля в наборе результатов A вы хотите обновить? –

+1

Пожалуйста, покажите нам, что вы хотите, чтобы получившийся в результате набор данных выглядел. –

ответ

1

Я нашел ответ:

row_number() OVER (PARTITION BY encounter_id ORDER BY encounter_id, effective_time) row. 

К сожалению, база данных имеют проблемы качества данных, которые мешают мне подход к решению этого пути.

Благодарим за помощь.

2

Не уверен, что у меня вопрос правильный. Дайте мне знать, если ниже решение отличается от того, что вы ожидали

SELECT * 
FROM 
(
    SELECT TOP 1 
     encounter_id, department_id, effective_time 
    FROM  adt 
    WHERE event_type IN (1,3,7) 
    ORDER BY effective_time 
)adt1, 
(
    SELECT encounter_id, department_id, arrival_time 
    FROM  ed 
    WHERE event_type = 50 
) ed1 

, то вы можете присоединиться как таблицы в соответствии с вашими потребностями, используя ИНЕКЕ

С уважением, Нияз

+0

Мне нравится этот подход лучше, спасибо. – craig

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