Função para trazer um número de linhas de um resultado
Exemplo da Rotina:
SELECT TOP 1 B1_COD, B1_DESC FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_MSBLQL != '1' AND SB1.D_E_L_E_T_ = ' '
Exemplo 1- Pegando apenas o primeiro registro:
SELECT TOP 1 B1_COD, B1_DESC FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_MSBLQL != '1' AND SB1.D_E_L_E_T_ = ' ' ORDER BY B1_COD
Exemplo 2- Pegando os 50 primeiros registros, ordenado por código:
SELECT TOP 50 B1_COD, B1_DESC FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_MSBLQL != '1' AND SB1.D_E_L_E_T_ = ' ' ORDER BY B1_COD
Exemplo 3- Utilizando o TOP (de uma subquery) em uma coluna:
SELECT TOP 100 B1_COD, B1_DESC, ( SELECT TOP 1 D1_DTDIGIT FROM SD1010 SD1 WHERE D1_FILIAL = '01' AND D1_COD = B1_COD AND D1_TIPO NOT IN ('B', 'D') AND SD1.D_E_L_E_T_ = ' ' ORDER BY D1_DTDIGIT ASC ) AS PRIM_ENTR, ( SELECT TOP 1 D1_DTDIGIT FROM SD1010 SD1 WHERE D1_FILIAL = '01' AND D1_COD = B1_COD AND D1_TIPO NOT IN ('B', 'D') AND SD1.D_E_L_E_T_ = ' ' ORDER BY D1_DTDIGIT DESC ) AS ULT_ENTR FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_MSBLQL != '1' AND SB1.D_E_L_E_T_ = ' ' ORDER BY B1_COD
Exemplo 4- Utilizando o TOP no WHERE para filtragem:
SELECT B1_COD, B1_DESC FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_MSBLQL != '1' AND B1_GRUPO IN ( SELECT TOP 4 BM_GRUPO FROM SBM010 SBM WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' ) AND SB1.D_E_L_E_T_ = ' ' ORDER BY B1_COD
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;