Página 1 de 1
Extrair dados de uma BD, com SQL e Ordenar
Enviado: 11 Fev 2019 às 16:20
por JCabral
Boa noite
Mais uma vez pedindo ajuda.
Tenho uma base de dados no Excel - Folha "BDPGI" - e gostaria de extrair determinados dados via SQL e ordená-los conforme está na Folha "FTECALCULOS", ou seja primeiro queria que os dados fossem ordenados pela data que está em [BDPGI$].[F58], forma ascendente, e depois por [BDPGI$].[F66], sendo que primeiro será "CON" e depois "COGP".
É possível com SQL?
Re: Extrair dados de uma BD, com SQL e Ordenar
Enviado: 15 Fev 2019 às 08:52
por JCabral
Alguma ajuda?
Re: Extrair dados de uma BD, com SQL e Ordenar
Enviado: 15 Fev 2019 às 11:02
por babdallas
Fiz várias tentativas, mas sem sucesso. Tentei fazer a ordenação com a lista personalizada usando ORDER BY + CASE + WHEN, ORDER BY + SWITCH e ORDER BY + IIF. Não consegui com nenhuma delas, o que não quer dizer necessariamente que não dê para fazer. Pode ser que esteja errando em algo.
Uma outra opção é trazer todo o RecordSet e tratar via Array, mas se der via SQl sem dúvida seria bem melhor.
Extrair dados de uma BD, com SQL e Ordenar
Enviado: 16 Fev 2019 às 23:25
por FelipeBarbosa
Boa noite,
Amigo tente usar TO_CHAR (StressDB.F58, 'DD/MM/YYYY') isso fará que o campo de data venha sem as horas, e acredito que facilitará, ai é só utilizar o ORDERBY TO_CHAR (StressDB.F58, 'DD/MM/YYYY') que é pra dar certo, ficaria assim:
SELECT StressDB.F3, StressDB.F5, StressDB.F10, StressDB.F19, StressDB.F20, StressDB.F31, StressDB.F32, StressDB.F44, StressDB.F45, StressDB.F46, StressDB.F47, StressDB.F56, StressDB.F57, TO_CHAR (StressDB.F58, 'DD/MM/YYYY'), StressDB.F59, StressDB.F60, StressDB.F66, StressDB.F71, StressDB.F72, StressDB.F74, StressDB.F75
FROM StressDB StressDB
WHERE (StressDB.F16>0) AND (StressDB.F73='S') AND (StressDB.F66 Like 'RR-%') AND (StressDB.F10 not Like 'CONSERV%') AND (StressDB.F10 not Like 'EXPLORAÇÃO%') AND (StressDB.F10 not Like 'RECUPERAÇÃO%') AND (StressDB.F10 not Like 'INTERVEN%') AND (StressDB.F59>={ts '2016-12-31 00:00:00'}) AND (StressDB.F58<{ts '2020-01-01 00:00:00'})
order by TO_CHAR (StressDB.F58, 'DD/MM/YYYY') asc
Extrair dados de uma BD, com SQL e Ordenar
Enviado: 16 Fev 2019 às 23:27
por FelipeBarbosa
Outra possibilidade é você tentar ordenar no Power Query, caso não saiba como posso te explicar o procedimento para realizar a conexão SQL no excel juntamento com o Power Query.
Re: Extrair dados de uma BD, com SQL e Ordenar
Enviado: 17 Fev 2019 às 08:28
por JCabral
Obrigado babdallas.
Caro FelipeBarbosa
Esse Query que você fala está dando os valores certos, ou seja ele está a ir buscar valores a outra Base de Dados e está a trazer todos os valores certinhos.
O que eu preciso é em função dos valores que estão em SETDATA!D9 e SETDATA!D12, extrair os dados da tabela geral que está na aba BDPGI, neste caso apenas os do CAMPO [F3] e ordena-los, primeiro pelo campo BDPGI!F58 e depois ordenar pelo campo BDPGI!F66 conforme a seguinte lista (RR-CON, RR-COGP, RR-COCN, RR-COCS, RR-COGL, RR-COS)
(NOTA: O Excel permite fazer isto, gostaria é que fosse em SQL)
Ou seja, na query abaixo falta a parte de ordenar pela lista, atendendo a que apenas ordena pela data:
obSQL = "SELECT [BDPGI$].[F3] FROM [BDPGI$] " & _
"WHERE([BDPGI$].[F66] = 'RR-" & UO1 & "' OR [BDPGI$].[F66] = 'RR-" & UO2 & "') " & _
"ORDER BY [BDPGI$].[F58] ASC"
Se não fui claro por favor me diga.
Obrigado
Jorge Cabral
Extrair dados de uma BD, com SQL e Ordenar
Enviado: 17 Fev 2019 às 18:25
por FelipeBarbosa
Eu entendi o que voce disse, mas você tentou usar o To_CHAR que mencionei acima?
Extrair dados de uma BD, com SQL e Ordenar
Enviado: 18 Fev 2019 às 11:38
por JCabral
Boa tarde Felipe
Testei, deu erro, estive procurando, pois como percebo muito pouco de SQL, mas nem sequer encontrei essa função.
Estarei a fazer alguma coisa mal? Dá para você testar na planilha que disponibilizei?
Obrigado
Jorge Cabral