15/04/2018 Database / sql server

select top ${take} * from (

SELECT

      isnull(Ltrim(RTRIM([CPFCGC_PES])),'') as documento

      ,isnull(RTRIM([IE_PES]), '') as inscricaoEstadual

      ,isnull(Ltrim(RTRIM([NOME_PES])), '') as nome

      ,ROW_NUMBER() OVER (order by CPFCGC_PES) AS rowid

      ,isnull(RTRIM([EMAIL]),'') as email, isnull((select enderecos.* from (SELECT RTRIM(PE.BAIRRO_ENDE) as bairro, 

                     RTRIM(PE.RUA_ENDE) as logradouro,

RTRIM(PE.CEP_ENDE) as cep,

RTRIM(CIDADES.CIDADES) as cidade,

RTRIM(CIDADES.UF) as estado,

RTRIM(TIPOS_ENDERECOS.NOME_TIPE) tipoEndereco 

              FROM   [cobsystems].[dbo].[PESSOAS_ENDERECOS] PE inner join [cobsystems].[dbo].[CIDADES] on PE.CIDADE_COD = CIDADES.CODIGO  inner join [cobsystems].[dbo].[TIPOS_ENDERECOS] on TIPOS_ENDERECOS.COD_TIPE = PE.COD_TIPE

              WHERE  PE.COD_PES = p.COD_PES) as enderecos FOR json path, INCLUDE_NULL_VALUES), '') AS enderecos, isnull((select telefones.* from ( 

              SELECT  RTRIM(PT.NR_TEL) as numero, RTRIM(TIPOS_TELEFONES.NOM_TIP) as tipo

              FROM   [cobsystems].[dbo].[PESSOAS_TELEFONES] PT inner join [cobsystems].[dbo].[TIPOS_TELEFONES] on pt.TIPO_TEL = TIPOS_TELEFONES.COD_TIP

              WHERE  PT.COD_PES = p.COD_PES) as telefones FOR json path, INCLUDE_NULL_VALUES), '') AS telefones FROM [cobsystems].[dbo].[PESSOAS] as p where CPFCGC_PES <> '') as c where rowid > ${skip} order by rowid

funciona da seguinte maneira, o take é a quantidade de registros

o skip, é a posição...ou seja, skip = 0, inicia na posicao 0, skip 50, inicia na posicao 50 e assim por diante.