Obrigado, Convidado!
Bem-vindo ao FMGARCIA - SAMP!
HuemersonFMG | ||||
CleidiSilva21 | ||||
barbfix | ||||
Tranks_NorT | ||||
RenatoFMG | ||||
William | ||||
Vinícius_ Kawasaki | ||||
scorpio | ||||
alfredw10 |
SQL - PARA INICIANTES
SQL - PARA INICIANTES
Trabalhando com Funções
- Observação:
- Os códigos abaixo foram testados a partir do ERP Sankhya, utilizando a tela (DBEXPORER) e campos nativos. Para testar basta copiar e colar.
> A função NVL é utilizada para substituir o valor nulo do campo pesquisado por outro valor determinado.
O código abaixo seleciona o campo dos registros da tabela, atribuindo valor 0 se for nulo.
- Código:
SELECT NVL(C.NUNOTA, 0) PEDIDO FROM TGFCAB C WHERE C.NUNOTA IS NULL AND C.DTNEG > '01/07/2024'
> A função NVL2 é utilizada para substituir o valor do campo, sendo este nulo ou não.
O código abaixo seleciona o campo dos registros da tabela, atribuindo valor 0 se NÃO for nulo, e atribuindo 2 se for nulo.
- Código:
SELECT NVL2(C.NUNOTA, 0, 2) PEDIDO FROM TGFCAB C WHERE C.NUNOTA IS NULL AND C.DTNEG > '01/07/2024'
> A função NULLIF compara dois valores. Se os valores forem iguais, a função retornará valor nulo. Se os valores dos campos forem iguais, a função retornará valor nulo. Se os valores desses campos forem diferentes, a função retornará o primeiro valor.
- Código:
SELECT C.NUNOTA, C.NUMNOTA, NULLIF(C.NUNOTA, C.NUMNOTA) FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '01/07/2024'
> A função COALESCE verifica os valores da expressão e retorna o primeiro valor não nulo.
O código abaixo seleciona dos registros da tabela, dentre os campos da consulta e exibe o primeiro que apresentar valor não nulo.
- Código:
SELECT COALESCE(C.NUNOTA, C.NUMNOTA, C.CODTIPOPER) FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '01/07/2024'
> A função Decode tem como objetivo decodificar o valor do campo selecionado, atribuindo um valor de resposta para cada valor de condição estipulado.
O código abaixo mostra como selecionar dos registros da tabela e exibe mensagem de acordo com as condições, no caso abaixo, estamos passando os valores de números para texto.
- Código:
SELECT NUNOTA, DECODE (C.NUNOTA, 30405, 'ENTREGUE', 37296, 'NAO ENTREGUE' ) DECODE FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '01/08/2024'
> CASE
A função CASE é utilizada para determinar a exibição do resultado a partir de condições especificadas dentro da função.
O código abaixo seleciona dos registros da tabela, e exibe mensagem de acordo com as condições: caso o campo VLRNOTA seja menor que 100, exibe a mensagem ‘MENOR QUE 100’, caso o campo VLRNOTA esteja entre 101 e 200, exibe a mensagem ‘ENTRE 101 E 200’, caso contrário, exibe a mensagem ‘MAIOR QUE 200’.
- Código:
SELECT VLRNOTA,
CASE WHEN VLRNOTA < 1000 THEN 'MENOR QUE 1000'
WHEN VLRNOTA BETWEEN 1001 AND 1999 THEN 'ENTRE 1000 E 2000'
ELSE 'MAIOR QUE 2000' END AS RETORNO
FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função LOWER, converte os valores para caracteres minúsculos.
O código abaixo seleciona dos registros da tabela convertendo o conteúdo do campo para que seja exibido todo em caracteres minúsculos.
- Código:
SELECT LOWER(C.OBSERVACAO)
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função UPPER, converte os valores para caracteres maiúsculos.
O código abaixo seleciona dos registros da tabela convertendo o conteúdo do campo para que seja exibido todo em caracteres maiúsculos.
- Código:
SELECT UPPER(C.OBSERVACAO)
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função INITCAP, converte os valores para texto com iniciais em maiúsculas.
O código abaixo seleciona dos registros da tabela convertendo o conteúdo do campo para que seja exibido o texto com iniciais em maiúsculas.
- Código:
SELECT INITCAP(C.OBSERVACAO)
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função SUBSTR tem como objetivo extrair parte do conteúdo do campo selecionado, de acordo com os parâmetros informados na função, independente do tipo do campo (numérico, texto ou data).
O código abaixo seleciona dos registros da tabela exibindo apenas o conteúdo a partir do primeiro caractere até os próximos 10 caracteres.
- Código:
SELECT SUBSTR(C.OBSERVACAO, 1, 10)
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função LENGTH tem como objetivo exibir o tamanho do valor que está gravado no campo selecionado (Quantidade de caracteres).
O código abaixo seleciona dos registros da tabela exibindo, logo em seguida, o tamanho do conteúdo do campo.
- Código:
SELECT C.OBSERVACAO, LENGTH(C.OBSERVACAO) CARACT
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função REPLACE tem como objetivo possibilitar a substituição de caracteres específicos por outros.
O código abaixo seleciona dos registros da tabela e exibe, logo em seguida, o campo substituindo o caractere 'E' por '_'.
- Código:
SELECT C.OBSERVACAO, REPLACE (C.OBSERVACAO, 'E', '_') CARACT
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '31/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função ROUND tem como objetivo efetuar o arredondamento de números para a quantidade de casas decimais determinada na função.
O código abaixo seleciona dos registros da tabela e exibe, logo em seguida, o campo com seu valor arredondado para 2 as casas decimais.
- Código:
SELECT ROUND(C.VLRNOTA, 2)
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função TRUNC tem como objetivo efetuar o corte de números para a quantidade de casas determinada na função.
O código abaixo seleciona dos registros da tabela e exibe, logo em seguida, o campo com seu valor truncado na segunda casa decimal ou seja depois da vírgula só será exibido duas casas decimais no máximo.
- Código:
SELECT TRUNC(C.VLRNOTA, 2)
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> MOD
A função MOD tem como objetivo exibir o resto (Modulo) da divisão de um valor por outro.
O código abaixo seleciona os registros da tabela exibindo o Resto da divisão do campo por 5.
- Código:
SELECT C.VLRNOTA, (C.VLRNOTA / 5) DIV5, MOD(C.VLRNOTA, 5) MOD5
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> A função SYSDATE seleciona a data do sistema.
- Código:
SELECT SYSDATE FROM DUAL
> O código abaixo seleciona a data do sistema adicionando 10 dias.
- Código:
SELECT SYSDATE + 10 FROM DUAL
> O código abaixo seleciona a data do sistema subtraindo 10 dias.
- Código:
SELECT SYSDATE - 10 FROM DUAL
> O código abaixo seleciona dos registros da tabela e exibe, logo em seguida, a diferença entre as datas, apelidando o campo com o nome de DIFERENCA.
- Código:
SELECT C.DTNEG, (C.DTNEG - 3) DTENT, (C.DTNEG - (C.DTNEG - 3) || ' DIAS') DIFERENCA
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> O código abaixo seleciona os registros da tabela e converte o valor do campo para caracteres de texto, no formato de 7 dígitos.
- Código:
SELECT TO_CHAR(C.NUNOTA, '0000000')
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
> O código abaixo seleciona os registros da tabela e converte o valor do campo para caracteres de texto, no formato ‘dd/mm’.
- Código:
SELECT TO_CHAR(C.NUNOTA, 'dd/mm')
FROM TGFCAB C WHERE C.OBSERVACAO IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
ORDER BY VLRNOTA
- Elementos para formatação de data:
YYYY é ano completo em números
YEAR é ano escrito por extenso
MM é mês em dois dígitos
MONTH é mês escrito por extenso
MON é mês escrito com as 3 primeiras letras iniciais
DY é dia escrito com a abreviação em 3 letras
DAY é dia escrito por extenso
DD é dia em dois dígitos
D é dia da semana O código abaixo de 1 a 7.
DDD é dia do ano O código abaixo de 1 a 356.
WW é número da semana dentro do ano
W é número da semana dentro do mês
> A função AVG tem como finalidade efetuar o cálculo de média simples do campo informado na função. O código abaixo seleciona a média dos valores do campo.
- Código:
SELECT C.NUNOTA, C.VLRNOTA, AVG(C.VLRNOTA) MEDIA_VLR
FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
GROUP BY C.NUNOTA, C.DTNEG, C.CODTIPOPER, C.VLRNOTA
ORDER BY C.NUNOTA
> A função COUNT tem como finalidade efetuar a contagem do campo informado na função.
O código abaixo efetua contagem do campo.
- Código:
SELECT COUNT(C.NUNOTA) QT_LINHAS, C.VLRNOTA
FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
GROUP BY C.DTNEG, C.CODTIPOPER, C.VLRNOTA
> A função MAX tem como finalidade exibir o maior valor encontrado no campo informado na função.
O código abaixo seleciona o maior valor encontrado no campo dentre todos os registros da tabela.
- Código:
SELECT MAX(C.VLRNOTA)
FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
> A função MIN tem como finalidade exibir o maior valor encontrado no campo informado na função.
O código abaixo seleciona o menorvalor encontrado no campo dentre todos os registros da tabela.
- Código:
SELECT MIN(C.VLRNOTA)
FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
> A função SUM tem como finalidade exibir a soma dos valores encontrados no campo informado na função.
O código abaixo soma os valores encontrados no campo dentre todos os registros da tabela.
- Código:
SELECT SUM(C.VLRNOTA)
FROM TGFCAB C WHERE C.NUNOTA IS NOT NULL AND C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
> A função GROUP BY tem como finalidade Agrupar valores iguais em campos das tabelas.
O código abaixo agrupa os campos da tabela que não possuem função, somando a uma das colunas que possui a função SUM.
- Código:
SELECT C.DTNEG, SUM(C.VLRNOTA) QTDTT
FROM TGFCAB C WHERE C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
GROUP BY C.DTNEG, C.CODTIPOPER
> Subconsultas (Sub-select)
• em SELECT Usada para calcular um valor ou retornar uma coluna adicional.
• em WHERE Usada para filtrar os resultados com base em critérios dinâmicos.
• em HAVING Usada para filtrar grupos de resultados após uma agregação.
Características das Subconsultas
1. Auto-contenção: A subconsulta é executada independentemente da consulta externa.
2. Escalar e Multivalor: Pode retornar um único valor (escalar) ou múltiplos valores (como uma tabela).
3. Correlação: Pode ser correlacionada, onde a subconsulta se refere a colunas da consulta externa.
- Código:
SELECT C.DTNEG, C.VLRNOTA,
(SELECT PRO.DESCRPROD FROM TGFITE ITE, TGFPRO PRO
WHERE ITE.NUNOTA = C.NUNOTA AND ITE.CODPROD = PRO.CODPROD
AND ITE.USOPROD = 'V' AND ROWNUM <= 1) DESCRPROD
FROM TGFCAB C WHERE C.DTNEG > '29/07/2024' AND C.CODTIPOPER = 1100
> A cláusula HAVING é similar ao funcionamento das cláusulas de restrição WHERE, porém, com uma grande diferença. Enquanto a cláusula WHERE é utilizada para efetuar restrições de informações baseadas em campos das tabelas, a cláusula HAVING é utilizada para efetuar restrições de informações baseadas em resultados das funções de grupo (SUM, AVG, MAX, MIN e COUNT).
- Código:
SELECT C.CODPARC, SUM(C.VLRNOTA) VLRTT
FROM TGFCAB C
GROUP BY C.CODPARC
HAVING SUM(C.VLRNOTA) > 1000
> funções de ligação (JOINS)entre tabelas permitem que você combine dados de duas ou mais tabelas com base em uma condição relacionada. Existem vários tipos de JOINS, cada um com uma finalidade específica:
1. INNER JOIN
• Retorna apenas as linhas que têm correspondência em ambas as tabelas.
- Código:
SELECT colunas
FROM tabela1
INNER JOIN tabela2
ON tabela1.coluna_comum = tabela2.coluna_comum
2. LEFT JOIN (ou LEFT OUTER JOIN)
• Retorna todas as linhas da tabela à esquerda e as linhas correspondentes da tabela à direita. Se não houver correspondência, os resultados da tabela à direita serão nulos.
- Código:
SELECT colunas
FROM tabela1
LEFT JOIN tabela2
ON tabela1.coluna_comum = tabela2.coluna_comum
3. RIGHT JOIN (ou RIGHT OUTER JOIN)
• Retorna todas as linhas da tabela à direita e as linhas correspondentes da tabela à esquerda. Se não houver correspondência, os resultados da tabela à esquerda serão nulos.
- Código:
SELECT colunas
FROM tabela1
RIGHT JOIN tabela2
ON tabela1.coluna_comum = tabela2.coluna_comum
4. FULL JOIN (ou FULL OUTER JOIN)
• Retorna todas as linhas quando há uma correspondência em uma das tabelas. Linhas não correspondentes nas tabelas resultam em valores nulos.
- Código:
SELECT colunas
FROM tabela1
FULL JOIN tabela2
ON tabela1.coluna_comum = tabela2.coluna_comum
5. CROSS JOIN
• Retorna o produto cartesiano das duas tabelas, ou seja, combina todas as linhas da tabela1 com todas as linhas da tabela2.
- Código:
SELECT colunas
FROM tabela1
CROSS JOIN tabela2
6. SELF JOIN
• É uma junção de uma tabela com ela mesma. Útil para comparar linhas dentro da mesma tabela.
- Código:
SELECT a.colunas, b.colunas
FROM tabela a, tabela b
WHERE condição
Exemplo de Ligações:
- Código:
SELECT C.CODPARC, SUM(C.VLRNOTA) VLRTT, P.NOMEPARC
FROM TGFCAB C
INNER JOIN TGFPAR P ON P.CODPARC = C.CODPARC
WHERE C.DTNEG > '01/07/2024'
GROUP BY C.CODPARC, P.NOMEPARC
HuemersonFMG- Fundador - ADM
- PublicaçõesPublicaçõesMembro VipMembro VipCriador de TópicosCriador de TópicosParticipação em tópicosParticipação em tópicosCriador de EventosCriador de EventosPopular no fórum - AmigosPopular no fórum - AmigosAvaliação de MSGAvaliação de MSGMelhores avaliações de AmigosMelhores avaliações de AmigosRei dos Grupos no FórumRei dos Grupos no FórumMelhor RPGRecebe este ao criar sua Ficha RPG no Perfil
- Mensagens : 514
Pontos : 26980
Reputação : 0
Data de inscrição : 11/06/2018
Idade : 52
Localização : Brasil
FMGRPG
FMG:
(200/100)
HuemersonFMG gosta desta mensagem
» Dicas para Excel
» Downloads - Links para Samp Server - Baixar GM e filterscript para SAMP
» Poema para um bom dia...
» Para que serve um fórum...
Ontem à(s) 12:56 por HuemersonFMG
» Link - Dicas para ERP Sankhya
Qua 21 Ago 2024, 13:44 por HuemersonFMG
» SQL - PARA INICIANTES
Qui 01 Ago 2024, 11:02 por HuemersonFMG
» Brasil Divisão Territorial
Qua 31 Jul 2024, 14:33 por HuemersonFMG
» O que são Triggers.
Qua 10 Jul 2024, 13:52 por HuemersonFMG
» Modelos para Mensagens
Sex 24 maio 2024, 14:07 por HuemersonFMG
» Modelo API Chamada Externa - Rest
Sex 10 maio 2024, 11:48 por HuemersonFMG
» Sistema de Ceps Brasileiro
Qui 14 Mar 2024, 09:36 por HuemersonFMG
» Esqueceu o número do seu telefone?
Ter 05 Dez 2023, 12:51 por HuemersonFMG
» Scripts SQL - Oracle
Ter 05 Dez 2023, 11:56 por HuemersonFMG
» Dicas para Excel
Sex 27 Out 2023, 11:22 por HuemersonFMG
» Acentos e Caracteres Especiais em HTML
Sex 20 Out 2023, 13:17 por HuemersonFMG
» Dez motivos para consumir mais café...
Dom 27 Ago 2023, 05:09 por alfredw10
» Combinações de teclas do Windows
Dom 06 Ago 2023, 13:29 por HuemersonFMG
» PL/SQL - Extensão da linguagem SQL - Oracle
Qua 10 maio 2023, 10:16 por HuemersonFMG