sql >> Base de Datos >  >> RDS >> Sqlserver

Ordenar por no funcionar cuando se inserta en la tabla temporal

Las tablas SQL representan desordenadas conjuntos ¿Hay algo que no esté claro sobre esto?

Cuando SELECT de una tabla, entonces los resultados están desordenados . La única excepción es cuando usa un ORDER BY en la consulta externa. Por lo tanto, incluya un ORDER BY y los resultados estarán en orden.

EDITAR:

Puedes eliminar el trabajo para la ordenación introduciendo una clave primaria agrupada.

create table #temp (
    Id int identity(1,1) primary key clustered, 
    SKU varchar(10),
    QtyRec int,
    Expiry date,
    Rec date
);

Luego, cuando lo hagas:

insert into #temp(SKU, QtyRec, Expiry, Rec)
    select SKU, QtyRec, Expiry, Rec
    from @Data
    order by id;

La clave principal agrupada en #temp se garantiza que estará en el orden especificado por order by . Luego la consulta:

select *
from #temp
order by id;

devolverá los resultados en orden, utilizando el índice agrupado. No será necesario ordenar.