none
PIVOT RRS feed

  • Pergunta

  • Duvida no uso do PIVOT .
    Consigo usar o PIVOT no mysql 14.14 Distrib 5.1 ? Estou tentando fazer esta consulta , mas sem sucesso.

    OBS: estou querendo selecionar o NOme do aluno ,a MEDIA das notas no periodo 1,2,3,4

    SELECT a.nome AS 'NOME'
    FROM dmMatriculas m INNER JOIN dmMatriculasAlunos a ON a.aluno_sk = m.aluno_sk
    INNER JOIN dmMatriculasDados d ON d.matricula_sk = m.matricula_sk
    INNER JOIN dmMatriculasNotas n ON n.matricula_sk = m.matricula_sk
    WHERE d.regional like 'NOMEREGIONAL'
    and d.unidade like 'graduaçao'
    and d.filial like ' NOMEFILIAL '
    and d.curso like 'NOMECURSO'
    and a.nome like 'NOMEALUNO' 
    GROUP BY d.periodo
    PIVOT (
     SUM(n.nota) / COUNT(distinct n.disciplina)  FOR d.periodo IN (1,2,3,4)
    )




    • Editado Coosk87 terça-feira, 4 de dezembro de 2012 17:15
    terça-feira, 4 de dezembro de 2012 17:02

Respostas

  • Olá...

    O comando PIVOT, se não me engano, é exclusividade do SQLServer.

    Olha esse exemplo:

    Criando tabela e dados...

    CREATE TABLE properties (
      id INT(11) NOT NULL,
      item_id INT(11) DEFAULT NULL,
      prop VARCHAR(255) DEFAULT NULL,
      value VARCHAR(255) DEFAULT NULL,
      PRIMARY KEY (id)
    );
    INSERT INTO properties VALUES 
      (1, 1, 'color', 'blue'),
      (2, 1, 'size', 'large'),
      (3, 2, 'color', 'orange'),
      (4, 3, 'size', 'small'),
      (5, 4, 'color', 'violet'),
      (6, 5, 'color', 'green');

    O Pivot em si...

    SELECT
      item_id,
      MAX(IF(prop = 'color', value, NULL)) AS color,
      MAX(IF(prop = 'size', value, NULL)) AS size
    FROM
      properties
    GROUP BY
      item_id;

    Espero ter lhe ajudado...

    Abraço !


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 13:15
    quarta-feira, 5 de dezembro de 2012 13:22

Todas as Respostas

  • Olá...

    O comando PIVOT, se não me engano, é exclusividade do SQLServer.

    Olha esse exemplo:

    Criando tabela e dados...

    CREATE TABLE properties (
      id INT(11) NOT NULL,
      item_id INT(11) DEFAULT NULL,
      prop VARCHAR(255) DEFAULT NULL,
      value VARCHAR(255) DEFAULT NULL,
      PRIMARY KEY (id)
    );
    INSERT INTO properties VALUES 
      (1, 1, 'color', 'blue'),
      (2, 1, 'size', 'large'),
      (3, 2, 'color', 'orange'),
      (4, 3, 'size', 'small'),
      (5, 4, 'color', 'violet'),
      (6, 5, 'color', 'green');

    O Pivot em si...

    SELECT
      item_id,
      MAX(IF(prop = 'color', value, NULL)) AS color,
      MAX(IF(prop = 'size', value, NULL)) AS size
    FROM
      properties
    GROUP BY
      item_id;

    Espero ter lhe ajudado...

    Abraço !


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 13:15
    quarta-feira, 5 de dezembro de 2012 13:22
  • Coosk87, bom dia!

    Não entendo muito de mysql, mais no seu like não falta o %%, e pelo que estou vendo tem um espaço no  "d.filial like ' NOMEFILIAL '", no SQL com esse espaço não retorna nada.

    Espero que seja isso.

    Abraço

    quarta-feira, 5 de dezembro de 2012 13:58