我正在尝试使用get external运行此SQL。
它可以工作,但是当我尝试重命名子查询或其他任何内容时,将其删除。
我尝试了as
,as
和''
中的名称,as
然后是""
中的名称,
与空间相同。这样做的正确方法是什么?
相关SQL:
SELECT list_name, app_name,
(SELECT fname + ' ' + lname
FROM dbo.d_agent_define map
WHERE map.agent_id = tac.agent_id) as agent_login,
input, CONVERT(varchar,DATEADD(ss,TAC_BEG_tstamp,'01/01/1970'))
FROM dbo.maps_report_list list
JOIN dbo.report_tac_agent tac ON (tac.list_id = list.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'))
答案 0 :(得分:1)
您可以删除dbo.d_agent_define
子查询,只需在代理定义表中添加联接。
此代码可以使用吗?
select list_name, app_name,
map.fname + ' ' + map.lname as agent_login,
input,
convert(varchar,dateadd(ss,TAC_BEG_tstamp,'01/01/1970')) as tac_seconds
from dbo.maps_report_list list
join dbo.report_tac_agent tac
on (tac.list_id = list.list_id)
join dbo.d_agent_define map
on (map.agent_id = tac.agent_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'))
请注意,我将dateadd列命名为,因为它没有名称。我还试图保持你的联接方式。我会对这个查询做一些不同的事情,使它更具可读性,但我只专注于摆脱子查询问题。
我没有这样做,但我建议您使用从中获取它们的表来限定所有列。
答案 1 :(得分:0)
要删除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%确定哪些列与哪些表一起使用。如果这不适合您,请告诉我以及它返回的数据是错误的。这将使得在需要时更容易解决。