2016-10-13 223 views
0

我将下一个样本数据放入一个表(EQUCODES)中,列“CODE”具有等效值,表示为“EQCODE”列。在“EQCODE”列这个值可以在“CODE”栏和等效值相同的值另一条记录将有反之亦然值即具有相同等值的组行具有相同的值

ID || CODE || EQCODE 
-------------------------- 
1 || a || b 
2 || b || a 
3 || c || d 
4 || d || c 

其他表(CLIENTTYPE),我想以上的加盟桌子旁边estructure,

CLIENTID || CODE 
-------------------------- 
1   || a 
2   || a  
3   || b 
4   || a 
6   || b 
7   || b 

我怎么能集团以这样的方式查询返回单个记录,因为他们是等价一旦它们与EQUCODES表连接这些CLIENTTYPE记录?

+2

如果这些都是两个你想加入的输入表请提供输出数据。 – Esty

回答

0

要查找每个客户的规范代码,使用:

select ClientID, min(code) as Code 
from (
    select ClientID, EQUCODES.EQCode as Code 
    from CLIENTTYPE inner join EQUCODES on CLIENTTYPE.Code = EQUCODES.Code 
    Union 
    select ClientID, EQUCODES.Code 
    from CLIENTTYPE inner join EQUCODES on CLIENTTYPE.Code = EQUCODES.EQCode 
) U 
Group By ClientID 

如果再想通过code聚集,你可以换这个那个查询:

select Code, count(ClientID) from 
(-- the query above 
) G 
Group by Code