Difference in order by clause behaviour in SQL Server 2008 vs 2014 -


i using temp table variable in stored procedure , doing insertion temp table temp table order clause. working in sql server 2008. order by clause working while inserting table.

but have upgraded database sql server 2014 , order by clause behavior has changed. no longer inserts data in ordered manner.

eg :

    declare @table1 table(id int, datecolumn datetime)     declare @table2 table(id int, datecolumn datetime)     declare @table3 table(id int, datecolumn datetime)      insert @table1 values(1, getdate());     insert @table1 values(1, dateadd(hour, 1, getdate()));     insert @table1 values(1, dateadd(hour, 2, getdate()));     insert @table2 values(2, getdate());     insert @table2 values(2, dateadd(minute, 55, getdate()));     insert @table2 values(2, dateadd(minute, 130, getdate()));      insert @table3        select *                     (select * @table1            union             select * @table2) t         order datecolumn      select * @table3 

and output correct in sql server 2008 is

id  datecolumn --------------------------- 1   2015-03-31 21:27:48.290 2   2015-03-31 21:27:48.290 2   2015-03-31 22:22:48.290 1   2015-03-31 22:27:48.290 1   2015-03-31 23:27:48.290 2   2015-03-31 23:37:48.290 

but in sql server 2014, showing incorrect

id  datecolumn ---------------------------- 1   2015-03-31 10:57:22.920 1   2015-03-31 11:57:22.920 1   2015-03-31 12:57:22.920 2   2015-03-31 10:57:22.920 2   2015-03-31 11:52:22.920 2   2015-03-31 13:07:22.920 

how make work in sql server 2014 ?

you have have order clause in select. sql server not guarantee order of rows stays same in insert. either original time column or add identity field.


Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -