SubQuery permite colocar informações a mais em alguns pontos como SELECT, FROM ou WHERE
Exemplo da Rotina:
SELECT [CAMPOS], [SUBQUERY] FROM [TABELA] JOIN [SUBQUERY] WHERE [FILTROS] AND / OR [SUBQUERY]
Exemplo 1- Fazendo uma SubQuery nos campos – trazendo o total dos produtos:
SELECT BM_GRUPO, BM_DESC, ( SELECT COUNT(B1_COD) FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_GRUPO = SBM.BM_GRUPO AND SB1.D_E_L_E_T_ = ' ' ) AS TOT_PROD FROM SBM010 SBM WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' '
Exemplo 2- Fazendo uma SubQuery no WHERE – trazendo grupos com mais de 100 produtos:
SELECT BM_GRUPO, BM_DESC FROM SBM010 SBM WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' AND ( SELECT COUNT(B1_COD) FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_GRUPO = SBM.BM_GRUPO AND SB1.D_E_L_E_T_ = ' ' ) > 100
Exemplo 3- Fazendo uma SubQuery no FROM – Fazendo Join com produtos bloqueados:
SELECT BM_GRUPO, BM_DESC, COUNT(B1_COD) AS BLOQUEADOS FROM SBM010 SBM INNER JOIN ( SELECT B1_COD, B1_GRUPO FROM SB1010 SB1 WHERE B1_FILIAL = ' ' AND B1_MSBLQL = '1' AND SB1.D_E_L_E_T_ = ' ' ) AS TAB_TEMP ON ( TAB_TEMP.B1_GRUPO = SBM.BM_GRUPO ) WHERE BM_FILIAL = ' ' AND SBM.D_E_L_E_T_ = ' ' GROUP BY BM_GRUPO, BM_DESC
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;