Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么我不能从外部查询的子查询中访问定义为“Select 1”的字段?_Sql_Sql Server_Tsql_Subquery_Sql Server 2014 - Fatal编程技术网

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你是对的,我完全错过了这个问题。