繁体   English   中英

使用插入语句排序

[英]Sort with Insert statement

我正在计算 SQL 中的线性回归,并且需要在#regression_data 表中保留排序顺序。

我正在创建时间序列回归,而 row_number() 正在创建 X 值的计数。 回归需要正确地维护 function 的正确排序顺序。

当我不插入临时表时,以下代码可以正常工作,因为我有能力进行排序。 即使我使用不创建临时表,我也不相信我在派生查询中排序。

如果 object_id('tempdb..#regression_data') 不是 null 开始删除表 #regression_data 结束

Select CAST(ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) as INT) 'x', CAST([Pax] as INT) 'y', *

--into #regression_data
from #TBB_Temp

´ 按 [出发年份]、[预订年份]、[分拣机] 排序

最简单的是将排序移至row_number()

select ROW_NUMBER() OVER (ORDER BY [Depart Year], [Booking Year], [Sorter])) as x,
       CAST([Pax] as INT) as y,
       t.*
--into #regression_data
from #TBB_Temp t;

SQL 表表示无序集,因此外部order by作用很小。

另一种方法是添加一个标识列:

select identity(int) as x,
       CAST([Pax] as INT) as y,
       t.*
--into #regression_data
from #TBB_Temp t
order by [Depart Year], [Booking Year], [Sorter];

insert无意义的order by的一个例外是identity尊重排序。

请注意,对于这两种方法,您必须在查询表时使用order by

select rd.*
from #regression_data rd
order by x;

请参阅上面关于表格和无序集的注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM