quarta-feira, 26 de abril de 2023

Usar número da linha como ID em um SELECT no SQL Server

         Nesse artigo vou mostrar 2 maneiras de como usar o número da linha como ID trazendo ele na consulta. Isso é util quando queremos por exemplo usar um DTO (ou VO) em uma consulta com JPA mas na consulta não tem campos que são sempre únicos para servir de ID para o DTO e o JPA precisa de um ID único.

   A primeira usamos o ROW_NUMBER e a segunda criamos uma SEQUENCE. Em "MEU_SELECT_COM_JOINS" você substitui por toda sua consulta que carrega os dados que você precisa para o DTO e pronto.


--------------------------------------------------
-- row_number(): SQL2005+
--------------------------------------------------
select
    row_number() over (order by (select null)) id,
    tabela_.*

from (MEU_SELECT_COM_JOINS) as tabela_
 
 
--------------------------------------------------
-- Sequence: SQL2012+
--------------------------------------------------
-- Criando sequencia
if object_id('sLinhas') is not null drop sequence sLinhas
create sequence sLinhas as int start with 1
 
select
    next value for sLinhas as id,
    tabela_.*

from (MEU_SELECT_COM_JOINS) as tabela_