Чтобы удалить подзапрос в операторе SELECT, я предлагаю следующее:
SELECT list_name, app_name, map.fname + ' ' + map.lname as agent_login, input, convert(varchar,dateadd(ss, TAC_BEG_tstamp, '01/01/1970))
FROM dbo.maps_report_list inner join
(dbo.report_tac_agent as tac inner join dbo.d_agent_define as map ON (tac.agent_id=map.agent_id)) ON list.list_id = tac.list_id
WHERE input = 'SYS_ERR' and app_name = 'CHARLOTT' and convert(varchar,dateadd(ss,day_tstamp,'01/01/1970'),101) = '09/10/2008'
and list_name LIKE 'NRBAD%' order by agent_login,convert(varchar,dateadd(ss,TAC_BEG_tstamp,'01/01/1970'))
Сначала я использовал скобки для создания внутреннего соединения между dbo.report_tac_agent и dbo.d_agent_define. Теперь это набор данных соединения.
Комбинация этих таблиц затем объединяется с вашей таблицей списков, которая, как я предполагаю, является основной таблицей здесь. Если я понимаю, что вы пытаетесь сделать со своим дополнительным выбором, это должно работать для вас.
Как сказал другой автор, вы должны использовать имена таблиц в ваших столбцах (например, map.fname), это просто делает вещи простыми для понимания. В моем примере я этого не сделал, потому что я на 100% уверен, какие столбцы и какие таблицы идут вместе. Пожалуйста, дайте мне знать, если это не сработает для вас и как данные, которые он возвращает, неверны. Это облегчит решение проблем.