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

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

+0

是不同的结果集A中的数据总是与B中的结果相关?此外,您要更新结果集A中的哪些/哪些字段? – 2009-11-04 21:12:19

+1

请告诉我们你想要的结果数据集看起来像什么。 – 2009-11-04 21:19:42

回答

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 

,那么你可以加入这两个表中根据自己的需要,使用WHERE子句

问候, 孜

+0

我更喜欢这种方法,谢谢。 – craig 2009-11-04 22:41:44