比较2个表与有限连接选项

时间:2013-06-14 16:06:04

标签: sql sql-server sql-server-2008 tsql

我有这个类别组,它有5个类别和描述(显示文本)的类别。字段(类别ID,显示文本)

我还有另一个视图,其中包含有关月,性别,新(部门员工),转移(来自其他部门的员工)和继续(相同部门)和类别ID的信息。

现在我想根据性别和月份检查类别表中的每个categoryID,是否有新的,转移或继续。

例如,CategoryID = 1,检查视图中是否存在任何CategoryID = 1然后返回VIEW中ID的所有详细信息,如果不是每个性别和月份返回0。

@EDIT:

    select c.UniqueID, 
           c.DisplayText ,  
           s.Gender, 
           s.Term,
           s.Status ,
           s.NoofStatus 
     from Category c 
     left outer Join 
     Status_Count_View s on c.UniqueID=s.UniqueID

我希望表A中的所有记录都映射到表B中的每个术语。如果表A中没有找到表B中特定类别的记录,那么仍然必须使用值0 < / p>

1 个答案:

答案 0 :(得分:0)

select * from category c, cat_view cv where c.Cat_ID = cv.categoryID
union
select c.cat_id, c.DisplayText, 0 , 0 ,'',0,0,0
from category c 
where c.Cat_ID not in (select distinct(categoryID) from cat_view)

请根据需要编辑列名。关键在于'联盟'。首先,我们得到匹配的一切。然后我们得到所有不匹配的类别并将其添加到结果中(通过'union'关键字实现)。