2014-11-16 3 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 
Смежные вопросы