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