T-SQL:更新记录集的第一行

时间:2009-11-04 21:09:39

标签: sql sql-server tsql

我有一个查询(A)可以按日期顺序返回多行:

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来查询A,这样查询B的单行将与查询A的第一个记录相关联。

我意识到我可以用CURSOR做到这一点,但我希望使用T-SQL row_number()函数。

2 个答案:

答案 0 :(得分: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

然后您可以根据需要使用WHERE子句

连接两个表

此致 孜

答案 1 :(得分:1)

我找到了答案:

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

不幸的是,数据库存在数据质量问题,导致我无法以这种方式接近解决方案。

感谢您的协助。