• Also maybe an aggregate will work:

    -- Set up sample data, this is a guess of what your current query results look like

    -- For the sake of this example webinar #45623 was from 10:00am to 10:30am

    -- and webinar #23178 was from 11:00am to 11:30am

    set language english;

    declare @query_results table (user_name nvarchar(10), event_id int, join_date datetime, attendance nvarchar(15));

    insert into @query_results values ('Johnny', 45623, '2013-04-30 09:20', 'Did not attend');

    insert into @query_results values ('Johnny', 45623, '2013-04-30 10:01', 'Attended');

    insert into @query_results values ('Johnny', 45623, '2013-04-30 10:34', 'Did not attend');

    insert into @query_results values ('Janey', 45623, '2013-04-30 10:09', 'Attended');

    insert into @query_results values ('Jimmy', 45623, '2013-04-30 10:02', 'Attended');

    insert into @query_results values ('Jimmy', 45623, '2013-04-30 10:15', 'Attended');

    insert into @query_results values ('Jimmy', 45623, '2013-04-30 10:31', 'Did not attend');

    insert into @query_results values ('Missy', 23178, '2013-04-30 11:32', 'Did not attend');

    insert into @query_results values ('Janey', 23178, '2013-04-30 11:02', 'Attended');

    insert into @query_results values ('Johnny', 23178, '2013-04-30 11:12', 'Attended');

    -- The existing query is returning more than one line per user,

    -- but we only want to know if the user has attended the event.

    -- Write an aggregate query, taking care of which column(s) you need to group by

    selectq.user_name,

    q.event_id,

    min(attendance) as attendance

    from @query_results q

    group by q.user_name, q.event_id;