Inquiridor
Consulta para retornar dados de 10 colunas em duas, com critérios pré estabelecidos

Discussão Geral
-
Olá a todos,
Preciso de ajuda para saber como fazer uma consulta que retorne 2 colunas, em uma tabela cujos dados estão divididos em 10 colunas.
No banco de dados (MySQL), será inserida uma tabela com o seguintes campos e dados abaixo:
Os dados devem retornar na consulta o seu respectivo Codigo, Nome e Data. Mas todos os campos "OF" e "RT", (ambos vão de 1 à 10), devem ficar um "embaixo" do outro, ou seja serem unidos em 2 colunas. Também não retornar o registro que possua o número 4096 quando ele aparecer em qualquer um dos campos "OF". Quando aparecer 0 (zero) no campo "OF" ou no campo "RT", também não retornar registro.
O resultado da consulta para a tabela da imagem acima, deve ser conforme a imagem abaixo:
Já tentei criar uma consulta porém não obtive sucesso no resultado.
Desde já agradeço a ajuda de todos.
Att
Eduardo
- Tipo Alterado Marcos SJ segunda-feira, 25 de janeiro de 2016 11:43 How to
Todas as Respostas
-
-
Se for items fixos:
Use essa SQL:
SELECT Codigo, Nome, Data, OF, RT, RTINDEX FROM ( SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF1 AS OF, RT1 AS RT, "1" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF2 AS OF, RT2 AS RT, "2" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF3 AS OF, RT3 AS RT, "3" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF4 AS OF, RT4 AS RT, "4" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF5 AS OF, RT5 AS RT, "5" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF6 AS OF, RT6 AS RT, "6" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF7 AS OF, RT7 AS RT, "7" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF8 AS OF, RT8 AS RT, "8" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF9 AS OF, RT9 AS RT, "9" AS RTINDEX FROM table1 UNION ALL SELECT Codigo, Nome, DATE_FORMAT(Data, '%d/%m/%Y') AS Data, OF10 AS OF, RT10 AS RT, "10" AS RTINDEX FROM table1 ) table2 WHERE (RT <> 0 AND OF <> 0) AND OF <> 4096 ORDER BY OF, RT
Fulvio C
-
Obrigado pela ajuda,
Sim os campos "OF" e "RT" são fixos, os números são códigos e preciso retorná-los em duas colunas.
Fulvio eu fiz um teste rápido da sua query utilizando o Banco MS Access, pois estou reinstalando o MySQL, tive a seguinte mensagem:
"Referência circular causada pelo alias 'Data' na lista SELECT da definição da consulta"
Ainda não sei como resolver este erro pois meu conhecimento em SQL é pouco, mas obrigado eu vou tentar resolver o problema, você me deu uma grande ajuda.
Att
Eduardo
-
Obrigado pela ajuda,
Sim os campos "OF" e "RT" são fixos, os números são códigos e preciso retorná-los em duas colunas.
Fulvio eu fiz um teste rápido da sua query utilizando o Banco MS Access, pois estou reinstalando o MySQL, tive a seguinte mensagem:
"Referência circular causada pelo alias 'Data' na lista SELECT da definição da consulta"
Ainda não sei como resolver este erro pois meu conhecimento em SQL é pouco, mas obrigado eu vou tentar resolver o problema, você me deu uma grande ajuda.
Att
Eduardo
Fulvio C
-
-