Sql 为什么我不能从外部查询的子查询中访问定义为“Select 1”的字段?
我有一个子查询:Sql 为什么我不能从外部查询的子查询中访问定义为“Select 1”的字段?,sql,sql-server,tsql,subquery,sql-server-2014,Sql,Sql Server,Tsql,Subquery,Sql Server 2014,我有一个子查询: LEFT JOIN (SELECT 1 as exist , MAX (ev.EventDate) as eventdate , evt.EventCode , CCaseID FROM stg.Event ev JOIN stg.EventTemplate evt ON ev.EventTempl
LEFT JOIN (SELECT 1 as exist
, MAX (ev.EventDate) as eventdate
, evt.EventCode
, CCaseID
FROM stg.Event ev
JOIN stg.EventTemplate evt
ON ev.EventTemplateID = evt.ID
WHERE evt.EventCode = 'UN002'
Group by CCaseID, evt.EventCode) as un002
ON un002.CCaseID = ev.CCaseID
WHERE evt.EventCode = 'UN001'
AND (un002.eventdate < ev.eventdate OR un002.eventdate IS NULL)
Group by ev.CCaseID, evt.EventCode) as un001
ON cc.ID = un001.CCaseID
我现在尝试按照un001.exist访问外部查询中的exist字段,但SQL Server告诉我该字段无效。我缺少什么?un001不存在属于un002子查询的字段
还有一个GROUPBY和and等等,所以这里缺少一些代码
您应该简化代码并使用CTE使其易于阅读和调试
大概是这样的:
WITH un001 as ( SELECT ... ),
un002 as ( SELECT ...)
SELECT *
FROM un001
JOIN un002
ON un001 .CCaseID = un002.CCaseID
如果列名为1,请尝试用方括号将数字[1]括起来,如图所示。您是否在询问为什么无法访问主查询中名为exist的列?嗯……un001.exist不是有效列。您将该子查询命名为un002。这将更容易让你们看到是否有更好的格式。我打赌这是一个更高层次的问题。这看起来像是一个混乱的查询。他们在发布的代码中没有exist的复数形式。@SeanLange你是对的,我完全错过了这个问题。