Mysql consulta lado a lado

MySQL

25/04/2017

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
Jocimar Pequeno

Jocimar Pequeno

Curtidas 0

Respostas

Luiz Santos

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
GOSTEI 0
Jocimar Pequeno

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

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.


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

Luiz Santos

25/04/2017

Codigo traduzido para o MySQL



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

Jocimar Pequeno

25/04/2017

Obrigado Luiz Fernando, irei testar. Forte abraço.
GOSTEI 0
POSTAR