2014-11-16 64 views
0

我有2个表,你可以看到我在下面提到CaseID与主键和外键有关,所以我想要结果的动作是1,而在第二个表中的队列不等于到7,但我的结果是给我2条记录,根据我的条件记录应该是一个,它返回的只是CaseID 3.所以你可以请我的查询中的错误。在SQL Server中使用连接查询得到结果

CaseID action 
    1  1 
    2  0 
    3  1 
    4  0 

Cid CaseID Queue 
1 1  1 
2 1  2 
3 1  7 
4 3  1 
5 3  2 
6 4  3 
7 4  6 
8 2  4 
9 2  5 

查询:

select 
    CaseTblA.CaseID 
from 
    CaseTblA 
inner join 
    CaseTblB on CaseTblA.CaseID = CaseTblB.CaseID 
where 
    CaseTblA.Action = 1 and CaseTblB.Queue <> 7 
group by 
    CaseTblA.CaseID 

该查询将返回:

CaseID 
1 
3 

,但它应该是回报:

CaseID 
3 
+1

你有两场比赛符合你的条件'(1,1,1), (2,1,2)' – bummi

回答

1

试试这个:

SELECT  CaseTblA.CaseID 
FROM   CaseTblB INNER JOIN 
         CaseTblA ON CaseTblB.CaseID = CaseTblA.CaseID 
    INNER JOIN 
         (select CaseID, MAX(Queue) as maxqueue 
         from CaseTblB 
         group by CaseID 
         Having MAX(Queue) <> 7) a on 
         a.CaseID = CaseTblA.CaseID 
where CaseTblA.Action = 1 
GROUP BY CaseTblA.CaseID