【发布时间】:2019-02-27 16:02:30
【问题描述】:
我在尝试基于 4 个表构建视图的 SQL Server 14 中遇到以下错误
ORDER BY 子句在视图、内联函数、派生中无效 表、子查询和公用表表达式,除非 TOP、OFFSET 或 FOR XML 也被指定
如何解决以下问题,以免出现此错误?
SELECT dbo.PS_Proj.[Project ID],
case
when PS_Proj.[City Name] is not null then concat(PS_Proj.[City Name], ' ', PS_Proj.[State])
when PS_Billing.[Location] is not null then max(PS_Billing.[Location])
when PS_Time.[Labor Location ID] is not null then max(PS_Location.[Labor Location Name])
else null
end AS [Location]
FROM dbo.PS_Location RIGHT OUTER JOIN
dbo.PS_Time ON dbo.PS_Location.[Labor Location ID] = dbo.PS_Time.[Labor Location ID] RIGHT OUTER JOIN
dbo.PS_Proj ON dbo.PS_Time.[Project ID] = dbo.PS_Proj.[Project ID] LEFT OUTER JOIN
dbo.PS_Billing ON dbo.PS_Proj.[Project ID] = dbo.PS_Billing.[Project ID]
ORDER BY PS_Billing.[T/S Date], PS_Time.[Date]
我想显示最近的 PS_Billing 位置,如果它为空,则显示最近的 PS_Time 位置。
【问题讨论】:
-
如果您正在创建视图,请删除 orber 并将结果从视图上的选择中排序,,
-
您正在尝试创建视图,但在创建视图时无法应用 ORDER BY。不过,您可以在从视图中选择时应用您的 ORDER BY。
-
或许
select top 100 %? -
将 ORDER BY 子句从您的视图中移除。
-
@SeanLange:有些人试图变得聪明,不会使用 100%,而是使用 99.99999999999999 :-)
标签: sql sql-server