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;