两张桌子:
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}}表中没有任何条目的公司。
答案 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