Sql server 有人能帮助我理解SQL Server查询中的错误顺序吗?
尝试输入总人口的查询时出错。vs。疫苗接种:Sql server 有人能帮助我理解SQL Server查询中的错误顺序吗?,sql-server,sql-order-by,sql-server-2019,Sql Server,Sql Order By,Sql Server 2019,尝试输入总人口的查询时出错。vs。疫苗接种: 老实说,我不知道如何纠正这个错误,而且我已经尽可能多地尝试了SQL(我对SQL非常陌生),到目前为止,我都在修改代码来修复它。有什么建议吗?(如果需要进一步的代码,请告诉我,我将发布整个项目,以便更好地了解问题的起因)错误消息是关于“范围的窗口框架的顺序子句”-您可能正在查看代码,看不到范围,也不知道它在说什么 这有助于了解范围是以下选项的可选部分: 因此,接下来我们再次阅读该消息,发现它在抱怨dea.LOCATION和dea.DATE列中存储的数
老实说,我不知道如何纠正这个错误,而且我已经尽可能多地尝试了SQL(我对SQL非常陌生),到目前为止,我都在修改代码来修复它。有什么建议吗?(如果需要进一步的代码,请告诉我,我将发布整个项目,以便更好地了解问题的起因)错误消息是关于“
范围的
窗口框架的顺序子句”-您可能正在查看代码,看不到范围
,也不知道它在说什么
这有助于了解范围
是以下选项的可选部分:
因此,接下来我们再次阅读该消息,发现它在抱怨dea.LOCATION
和dea.DATE
列中存储的数据的组合宽度。在没有看到列定义的情况下,我猜任何DATE
列都会相当小,因此可以合理地假设大部分数据来自LOCATION
列
一方面,我们可以尝试减少此列的宽度,例如使用子字符串。但是,如果我们再看一遍整个OVER()
子句,就会发现在orderby
部分中根本不需要它
为什么?
因为同一列被用来对数据进行分区。orderby
定义了每个分区内的排序,但如果每个分区只包含共享相同dea.LOCATION
值的行,则所有行都将根据该列值进行同等排序
因此,只需将其从
ORDER BY
中删除,错误就会消失。首先,您应该将SELECT
语句作为文本复制到问题中。当然,还有错误消息。这将有助于找到愿意阅读您的问题的人。您是否可以尝试按dea.Location,dea.DATE进行排序,而不是按2,3进行排序?如果您不能从一个坚实的架构开始构建,我可以预见未来会出现许多问题。为什么列的位置(可能还有日期)如此之大?就这一点而言,为什么要使用由三部分组成的名称?您的连接应该决定用于对象引用的数据库。不要按顺序排列——这是非常不鼓励的。
OVER (
[ <PARTITION BY clause> ]
[ <ORDER BY clause> ]
[ <ROW or RANGE clause> ]
)
OVER (PARTITION BY dea.LOCATION ORDER BY dea.LOCATION, dea.DATE)