Problema: Como mostrar apenas parte dos dados de um coluna em um relatório?
SUBSTRING
Conheça o “substring”, e como ele funciona.
A sintaxe é a seguinte:
SELECT SUBSTRING ("nome do campo"
FROM "coluna_inicial"
FOR "caracteres")
FROM "nome da tabela"
Exemplo: A máscara de estoque é de 8 dígitos, porém quero que na SQL mostre apenas os 3 últimos dígitos
SELECT SUBSTRING (codpa
FROM 6
FOR 3) AS Referencia
FROM etprocab
WHERE codemp=1
Nota: Este comando é muito útil e pode ser usado inclusive para acerto de base, quando é necessário diminuir o tamanho de alguma configuração, para isto basta combiná-lo com update
CAST
Porém a coluna irá ser mostrada grande, devido ao tamanho que foi criada, ai neste caso basta usar o “cast” para reduzir o tamanho da coluna na consulta
Exemplo:
SELECT cast(SUBSTRING (codpa
FROM 6
FOR 3) AS varchar (3)) AS REF
FROM etprocab
WHERE codemp=1
Nota: Este comando é útil, para ser usado no geral, pois neste caso iria mostrar a coluna grande no CSV e após usar o “cast” o tamanho da coluna fica limitada ao tamanho informado no comando
LIKE
Outro comando bacana é o like, que acredito que não seja novidade pra ninguém, porém mesmo assim vai a dica:
SELECT *
FROM dtclifor
WHERE insestrg LIKE '%NTO' /* Neste caso o percentual antes da palavra substitui as letras que o antecede */
AND insestrg LIKE 'ISE%' /* Neste caso o percentual depois da palavra substitui as letras da sequencia */
AND insestrg LIKE '%EN%' /* E entre percentuais ira retornar todos valores que contenham a consulta em qualquer parte do campo */
Mais se quiser consultar todos os registros que variam apenas um caracter, como faço?
Basta utilizar o “_” (underline) no lugar do percentual, pois neste caso ele irá considerar a variação de apenas uma casa decimal na consulta.
Exemplo:
SELECT *
FROM dtclifor
WHERE codclifor LIKE '10000_1'
CASE
E vai a dica do comando case, onde com ele é possível mostrar dados que seriam mostrados por linha, nas colunas
Exemplo:
select
sum ( case when vendedor = 1 then pretot else 0 end ) as Vendedor_1,
sum ( case when vendedor = 2 then pretot else 0 end ) as Vendedor_2,
sum ( case when vendedor = 3 then pretot else 0 end ) as Vendedor_3,
sum ( case when vendedor = 4 then pretot else 0 end ) as Vendedor_4
from vtvencor
where tipo in ('VBA', 'VBT', 'VCO')
and situacao=1
and codemp=1
Nota: Este é um exemplo simples de como usar o comando case, onde mostra o valor vendido com base na tabela vtvencor, porém não é considerado os descontos e acréscimos do cadastro da venda e mostra os valores independente da venda cadastrada ou não. É apenas para demonstrar o uso do case.
COMENTÁRIO EM COMANDOS
Outra dica útil é poder colocar comentários em comandos para isso basta entre os comentários colocar as tags “/*” para iniciar e “*/” para finalizar, com isso ao executar o comando, não será considerado o que estiver entre as tags
Exemplo:
select * from dtclifor
where codemp=1 /* Comentário qualquer de sua preferencia... */