Mysql consulta lado a lado
Estou precisando de uma consulta em MYSQL que me retorne os valores lado a lado.
Ex:
Tenho estes dados:
0001 FULANO DE TAL 01/01/2016 120,00
0001 FULANO DE TAL 01/02/2016 120,00
0002 BELTRANO DE TAL 01/01/2016 140,00
0003 CICRANO DE TAL 01/01/2016 110,00
0003 CICRANO DE TAL 01/02/2016 110,00
Preciso de uma consulta que me retorne isto:
0001 FULANO DE TAL 120,00 120,00
0002 BELTRANO DE TAL 140,00
0003 CICRANO DE TAL 110,00 110,00
Ex:
Tenho estes dados:
0001 FULANO DE TAL 01/01/2016 120,00
0001 FULANO DE TAL 01/02/2016 120,00
0002 BELTRANO DE TAL 01/01/2016 140,00
0003 CICRANO DE TAL 01/01/2016 110,00
0003 CICRANO DE TAL 01/02/2016 110,00
Preciso de uma consulta que me retorne isto:
0001 FULANO DE TAL 120,00 120,00
0002 BELTRANO DE TAL 140,00
0003 CICRANO DE TAL 110,00 110,00
Jocimar Pequeno
Curtidas 0
Respostas
Luiz Santos
25/04/2017
Boa noite Jocimar.
Não entendi muito bem.
O que você quer dizer com "Lado a Lado"
Grande abraço
Não entendi muito bem.
O que você quer dizer com "Lado a Lado"
Grande abraço
GOSTEI 0
Jocimar Pequeno
25/04/2017
Eu tenho códigos e nomes repetidos com valores repetidos. Um em cada linha. Preciso que o código e o nome só apareçam uma vez e os valores quantas vezes forem repetidos, um ao lado do outro como no exemplo.
GOSTEI 0
Luiz Santos
25/04/2017
Jocimar, veja o exemplo que montei.
Uma dica, é você trabalhar com os meses da data, a menos que você queira ver o dia mesmo.
Eu fiz no SQL Server, mas a lógica para o MySQL é a mesma.
Grande abraço
Uma dica, é você trabalhar com os meses da data, a menos que você queira ver o dia mesmo.
Eu fiz no SQL Server, mas a lógica para o MySQL é a mesma.
IF OBJECT_ID('TEMPDB..#TESTE') IS NOT NULL DROP TABLE #TESTE CREATE TABLE #TESTE ( CODIGO VARCHAR(50), NOME VARCHAR(50), DATA VARCHAR(50), VALOR NUMERIC (18,2) ) INSERT INTO #TESTE VALUES ('0001', 'FULANO DE TAL', '01/01/2016', 120.00), ('0001', 'FULANO DE TAL', '01/02/2016', 120.00), ('0002', 'BELTRANO DE TAL', '01/01/2016', 140.00), ('0003', 'CICRANO DE TAL', '01/01/2016', 110.00), ('0003', 'CICRANO DE TAL', '01/02/2016', 110.00) SELECT TAB.CODIGO, TAB.NOME, SUM(TAB.JAN) AS JAN, SUM(TAB.FEV) AS FEV FROM ( SELECT CODIGO, NOME, CASE WHEN DATA = '01/01/2016' THEN VALOR ELSE 0 END AS JAN, CASE WHEN DATA = '01/02/2016' THEN VALOR ELSE 0 END AS FEV FROM #TESTE) AS TAB GROUP BY TAB.CODIGO, TAB.NOME
Grande abraço
GOSTEI 0
Luiz Santos
25/04/2017
Codigo traduzido para o MySQL
Grande abs
CREATE TEMPORARY TABLE TESTE ( CODIGO VARCHAR(50), NOME VARCHAR(50), DATA VARCHAR(50), VALOR NUMERIC (18,2) ); INSERT INTO TESTE VALUES ('0001', 'FULANO DE TAL', '01/01/2016', 120.00), ('0001', 'FULANO DE TAL', '01/02/2016', 120.00), ('0002', 'BELTRANO DE TAL', '01/01/2016', 140.00), ('0003', 'CICRANO DE TAL', '01/01/2016', 110.00), ('0003', 'CICRANO DE TAL', '01/02/2016', 110.00); SELECT TAB.CODIGO, TAB.NOME, SUM(TAB.JAN) AS JAN, SUM(TAB.FEV) AS FEV FROM ( SELECT CODIGO, NOME, CASE WHEN DATA = '01/01/2016' THEN VALOR ELSE 0 END AS JAN, CASE WHEN DATA = '01/02/2016' THEN VALOR ELSE 0 END AS FEV FROM TESTE) AS TAB GROUP BY TAB.CODIGO, TAB.NOME;
Grande abs
GOSTEI 0
Jocimar Pequeno
25/04/2017
Obrigado Luiz Fernando, irei testar. Forte abraço.
GOSTEI 0