从多个表中选择Distinct Value,其中One具有倍数

时间:2013-03-07 21:37:52

标签: sql sql-server-2008

我已经搜索过这个问题,但没有找到任何类似的东西。我有两个表,都有一个字段,FormID。在表A中,FormID是唯一的。在表B中,可以有多个具有相同FormID的记录 - 表B是问题跟踪器表,因此如果表单中存在多个数据输入问题,那么将有多个记录。

以下查询有效:

select distinct b.FormID
from b
where b.FormID = a.FormID
and a.status='done'

它确实生成了唯一FormID的结果列表。但是,我还需要在此查询中获取其他一些列,当我将这些列添加到select或join时,我将获得所有重复的FormID。

我试过了:

select distinct (b.FormID), a.FormType, a.Site, a.uid, b.ProbID, b.Date
from b, a
where b.FormID = a.FormID
and a.status='done'

以及使用连接的几个变体,但它们都以带有重复FormID的所有行结束。

建议?

1 个答案:

答案 0 :(得分:0)

尝试

SELECT  b.FormID, 
        MAX(a.FormType) FormType, 
        MAX(a.Site) Site, 
        MAX(a.uid) uid, 
        MAX(b.ProbID) ProbID, 
        MAX(b.Date) Date
  FROM b INNER JOIN 
       a ON b.FormID = a.FormID
 WHERE a.status='done'
 GROUP BY b.FormID