子查询的SQL顺序

时间:2018-03-09 16:33:27

标签: sql sql-server subquery sql-order-by

我正在尝试订购此1日期列。我试图在子查询中以及在子查询之外对它进行排序,但没有任何工作。我错过了什么? "按e。[预测完成]排序"

SELECT DISTINCT
    (
      SELECT Convert(varchar(10), cast(e.[forecast finish]  as date), 101) 
      FROM [CDW_CNA].[ssdv].[vw_OVP_Milestones] e
      WHERE e.[Activity] like '4.7.%'
      AND e.[job nbr] = c.[job nbr]
    ) as "Real Estate Finished" 

FROM [CDW_CNA].[ssdv].[vw_OVP_JobSiteAddress] c
INNER JOIN [CDW_CNA].[ssdv].[vw_OneView_Client_Property] d on c.[OVCPID] = d.[OneViewClientPropertyID]
INNER JOIN [CDW_CNA].[ssdv].[vw_OVP_ProjectDetails] a on a.[job nbr] = c.[job nbr]
INNER JOIN [CDW_CNA].[ssdv].[vw_OVP_DARM] b on b.[job nbr] = c.[job nbr]
INNER JOIN [CDW_CNA].[ssdv].[vw_CREM_BasicLeaseDetails] e on left(e.[TenureID],4) = c.[Client Facility Nbr]
WHERE
b.[Comments] is not null
AND e.[leaseEndDate] = (
     SELECT
        max([LeaseEndDate]) 
     FROM [CDW_CNA].[ssdv].[vw_CREM_BasicLeaseDetails] f
     WHERE f.[PropertyKey] = e.[PropertyKey]
)

1 个答案:

答案 0 :(得分:1)

在子查询之外,你看不到别名为'e'的表[CDW_CNA].[ssdv].[vw_OVP_Milestones],因为它在子查询中。

引擎不会保留子查询中的顺序,它会根据可以改变它的其余计划/连接进行排序。

您应该可以在外面订购,但您必须order by"Real Estate Finished"

就像一张纸条 - 给出一个选择,我不会使用带空格的字段名称,你最终会长期后悔。如果这里需要3个部分名称,你也可以进行审查,但它可能是正确考虑的,但默认情况下不会使用。

顶部的子查询也看起来不像需要是一个子查询 - 您应该只能加入[CDW_CNA]。[ssdv]。[vw_OVP_Milestones]。