postgreSQL像查询一样透视

时间:2017-06-09 06:31:39

标签: sql database oracle postgresql pivot

让我解释一下我的情况,我在excel中有一个表示例,就像这样,TOTAL列目前无关紧要。

    Nombre      MachID  LUN-25  TOTAL   MART-26 TOTAL   MIER-27 TOTAL
1   LUPITA      1       100     <blank> <blank> <blank> 20      <blank>
2   LUPITA      2       150     <blank> <blank> <blank> 30      <blank>
3   LUPITA      3       200     450     <blank> <blank> 50      100
4   SELENE      4       148     380     256     256     <blank> <blank>
5   SERGIO BILL 5       509     370     500     500     <blank> <blank>

我正在做一些查询连接表并透视它们,但是我得到了一些像这样的表。

    Nombre      MachID  LUN-25  TOTAL   MART-26 TOTAL   MIER-27 TOTAL
1   LUPITA      1       100     <blank> <blank> <blank> <blank> <blank>
2   LUPITA      2       150     <blank> <blank> <blank> <blank> <blank>
3   LUPITA      3       200     450     <blank> <blank> <blank> 
4   LUPITA      1       <blank> <blank> <blank> <blank> 20      <blank>
5   LUPITA      2       <blank> <blank> <blank> <blank> 30      <blank>
6   LUPITA      3       <blank> <blank> <blank> <blank> 50      100
7   SELENE      4       148     380     <blank> <blank> <blank> <blank>
8   SELENE      4       <blank> <blank> 256     256     <blank> <blank>
9   SERGIO BILL 5       509     370     <blank> <blank> <blank> <blank>
10  SERGIO BILL 5       <blank> <blank> 500     500     <blank> <blank>

这是我的查询

    select 
    u.nombre, 
    m.codigo_barras::text as "id_maquina", 
    (select v1.entrada  from tb_visita v1 where date_trunc('day',v1.fecha_visita) =  '2017-06-08 05:37:43.559'::date - integer '6' and v1.id_visita = v.id_visita) as "vie. 2 de junio", 
    (select v1.entrada  from tb_visita v1 where date_trunc('day',v1.fecha_visita) =  '2017-06-08 05:37:43.559'::date - integer '5' and v1.id_visita = v.id_visita) as "sáb. 3 de junio", 
    (select v1.entrada  from tb_visita v1 where date_trunc('day',v1.fecha_visita) =  '2017-06-08 05:37:43.559'::date - integer '4' and v1.id_visita = v.id_visita) as "dom. 4 de junio", 
    from tb_visita v 
    INNER JOIN tb_maquinas m ON m.id_maquina = v.id_maquina 
    inner join tb_usuarios u on u.id = v.id_usuario 
    where date_trunc('day',v.fecha_visita) >=  '2017-06-08 05:37:43.559'::date - integer '6' and date_trunc('day',v.fecha_visita) <=  '2017-06-08 05:37:43.559'::date 

    order by u.nombre ASC, t.nombre_contacto ASC ;

正如你所看到的,我的细节是有重复的行可以分组在同一行中,而不是在不同的日子,实际上我正在阅读this,我会看到是否可以清除我的想法并帮我解决这个问题。

我认为没有必要放置表格结构,但如果需要我会更新。

0 个答案:

没有答案