Usuário com melhor resposta
Transformar Consulta Linhas em Colunas

Pergunta
-
Bom dia a Todos,
Venho solicitar a ajuda de todos com a seguinte duvida, tenho uma consulta e gostaria de transformar o resultado dessa consulta em colunas sei que tenho que usar Pivot mais Pivot sempre agrega uma função e no caso só gostaria de alinhar minha consulta!
Não sei como fazer!
Segue um exemplo da minha consulta
Tipo_de_Servico Serviço nm_Servico vl_Custo Minimo Ideal Grupo id_Custo CONST CAR CX2 10.00 11.00 12.50 D 1 CONST CAR CX2 10.00 13.00 14.50 G 1 CONST CAR CX2 10.00 15.00 16.50 R 1 CONST CAR CX4 15.00 16.00 17.50 D 2 CONST CAR CX4 15.00 18.00 19.50 G 2 CONST CAR CX4 15.00 20.00 21.50 R 2 ARM DES CX4 1.00 2.00 2.50 D 3 ARM DES CX4 1.00 3.00 3.50 G 3 ARM DES CX4 1.00 4.00 4.50 R 3 Alguém poderia me ajudar para que minha consulta tivesse um resultado parecido com esse exemplo, pois esgotei meu conhecimento!
Tipo_de_Servico Serviço nm_Servico vl_Custo Min D Max D Min G Max G Min R Max R id_Custo CONST CAR CX2 10.00 11.00 12.50 13.00 14.50 15.00 16.50 1 CONST CAR CX4 15.00 16.00 17.50 18.00 19.50 20.00 21.50 2 ARM DES CX4 1.00 2.00 2.50 3.00 3.50 4.00 4.50 3 Segue minha consulta!
SELECT D.ds_DivisaoServico as Tipo_de_Servico, UPPER(SC.ds_Servico) AS Servico, TP.nm_Servico, C.vl_Custo, GC.vl_Min AS Minimo, GC.vl_Ideal AS Ideal, GC.tp_Grupo AS Grupo, C.id_Custo FROM TbdOperacao AS O INNER JOIN TbdDivisaoServico AS D ON D.id_Operacao = O.id_Operacao INNER JOIN TbdConst AS SC ON SC.id_DivisaoServico = D.id_DivisaoServico INNER JOIN TbdCusto AS C ON C.id_Servico = SC.id_Servico INNER JOIN TbdTipoServico AS TP ON TP.id_TipoServico = C.id_TipoServico INNER JOIN TbdGrupoComercial AS GC ON GC.id_Custo = C.id_Custo
Desde já Muito Obrigado!
Respostas
-
Não tinha visto a coluna Grupo... experimente dessa forma:
SELECT D.ds_DivisaoServico as Tipo_de_Servico, UPPER(SC.ds_Servico) AS Servico, TP.nm_Servico, C.vl_Custo, min(case when GC.tp_Grupo = 'D' then GC.vl_Min end) AS MinD, max(case when GC.tp_Grupo = 'D' then GC.vl_Ideal end) AS MaxD, min(case when GC.tp_Grupo = 'G' then GC.vl_Min end) AS MinG, max(case when GC.tp_Grupo = 'G' then GC.vl_Ideal end) AS MaxG, min(case when GC.tp_Grupo = 'R' then GC.vl_Min end) AS MinR, max(case when GC.tp_Grupo = 'R' then GC.vl_Ideal end) AS MaxR, C.id_Custo FROM TbdOperacao AS O INNER JOIN TbdDivisaoServico AS D ON D.id_Operacao = O.id_Operacao INNER JOIN TbdConst AS SC ON SC.id_DivisaoServico = D.id_DivisaoServico INNER JOIN TbdCusto AS C ON C.id_Servico = SC.id_Servico INNER JOIN TbdTipoServico AS TP ON TP.id_TipoServico = C.id_TipoServico INNER JOIN TbdGrupoComercial AS GC ON GC.id_Custo = C.id_Custo group by D.ds_DivisaoServico, SC.ds_Servico, TP.nm_Servico, C.vl_Custo, C.id_Custo
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcio Camargo quinta-feira, 23 de julho de 2015 16:42
- Não Marcado como Resposta Marcio Camargo quinta-feira, 23 de julho de 2015 16:42
- Marcado como Resposta Marcio Camargo quinta-feira, 23 de julho de 2015 16:47
Todas as Respostas
-
Bom dia,
Marcio, qual critério deve ser utilizado para definir quais valores vão para cada coluna (D, G e R)?
Assinatura: http://www.imoveisemexposicao.com.br
-
Não tinha visto a coluna Grupo... experimente dessa forma:
SELECT D.ds_DivisaoServico as Tipo_de_Servico, UPPER(SC.ds_Servico) AS Servico, TP.nm_Servico, C.vl_Custo, min(case when GC.tp_Grupo = 'D' then GC.vl_Min end) AS MinD, max(case when GC.tp_Grupo = 'D' then GC.vl_Ideal end) AS MaxD, min(case when GC.tp_Grupo = 'G' then GC.vl_Min end) AS MinG, max(case when GC.tp_Grupo = 'G' then GC.vl_Ideal end) AS MaxG, min(case when GC.tp_Grupo = 'R' then GC.vl_Min end) AS MinR, max(case when GC.tp_Grupo = 'R' then GC.vl_Ideal end) AS MaxR, C.id_Custo FROM TbdOperacao AS O INNER JOIN TbdDivisaoServico AS D ON D.id_Operacao = O.id_Operacao INNER JOIN TbdConst AS SC ON SC.id_DivisaoServico = D.id_DivisaoServico INNER JOIN TbdCusto AS C ON C.id_Servico = SC.id_Servico INNER JOIN TbdTipoServico AS TP ON TP.id_TipoServico = C.id_TipoServico INNER JOIN TbdGrupoComercial AS GC ON GC.id_Custo = C.id_Custo group by D.ds_DivisaoServico, SC.ds_Servico, TP.nm_Servico, C.vl_Custo, C.id_Custo
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcio Camargo quinta-feira, 23 de julho de 2015 16:42
- Não Marcado como Resposta Marcio Camargo quinta-feira, 23 de julho de 2015 16:42
- Marcado como Resposta Marcio Camargo quinta-feira, 23 de julho de 2015 16:47
-