计算一个表中的行以检查它们是否与另一个表中的值匹配

时间:2011-08-16 17:57:51

标签: sql sql-server-2005 tsql

两张桌子:

attendee_tables: company_id int, ind_company_name varchar, ticket int

参与者: company_id int, first_name varchar, last_name varchar,

attendee_tables包含一个名为ticket的列,其中包含公司购买的门票数量。 attendees表是注册人。我想要一个返回公司的查询以及不在attendees表中的人数或他们在attendees中的条目数与attendees_tables中的条目数相同select t.company_id, t.ind_company_name, sum(t.tickets) from attendee_tables t left outer join attendees a on t.company_id = a.company_id where a.company_id is null group by t.company_id, t.ind_company_name order by sum(t.tickets) 1}}。

到目前为止我所拥有的:

attendees

这似乎正确地给了我问题的第一部分,即{{1}}表中没有任何条目的公司。

2 个答案:

答案 0 :(得分:2)

取消注释仅过滤掉不匹配行

的位置
select  
   t.company_id, 
   t.ind_company_name, 
   t.tickets, 
   isnull(attcnt.attendeecount, 0) as attendeecount
from  attendee_tables t 
left join 
  (select company_id, count(*) as attendeecount from attendees group by company_id) attcnt
on attcnt.company_id = t.company_id
-- where t.tickets <> attcnt.attendeecount

答案 1 :(得分:1)

试试这个:

SELECT t.company_id, t.ind_company_name, t.tickets attendee_tables_Tickets, a.Tickets attendees_Tickets
FROM attendee_tables t 
LEFT JOIN (SELECT company_id, COUNT(*) Tickets FROM attendees GROUP BY company_id) a  
    ON t.company_id = a.company_id  
WHERE t.tickets <> ISNULL(a.Tickets,0) OR A.company_id IS NULL