SQL - Agrupar datos resultantes de una consulta UNION ALL

 
Vista:
sin imagen de perfil

Agrupar datos resultantes de una consulta UNION ALL

Publicado por Mariano José (6 intervenciones) el 18/04/2018 19:25:13
Muy buen día comunidad.....

Les agradecería su ayuda con el siguiente caso, estoy extrayendo datos de 2 consultas con la clausula UNION ALL, el resultado de estos datos los quiero agrupar para disminuir el número de líneas resultantes, cuando intento agrupar se me genera un error en la consulta abajo descrita.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
select
  m.finca, m.lote, m.desc_finca, m.zona, m.supervisor, max(m.fecha),
  sum(m.pk_mobra), sum(m.ton_est_mo), sum(m.ton_ins), sum(m.area_ins)
from
  (
  select
    a.cd_upnivel1 as finca, a.cd_upnivel3 as lote,
    (select de_upnivel1 from pimscs.upnivel1 where cd_upnivel1=a.cd_upnivel1) as desc_finca,
    e.de_unid_adm as zona, c.da_mod_adm||''''-''''|| d.de_func as supervisor,
    max(a.dt_operacao) as fecha, sum(a.qt_qtde) as pk_mobra, sum(a.qt_qtde)/100 as ton_est_mo,
    0 as ton_ins, 0 area_ins
  from pimscs.bolrur_de a
  left outer join pimscs.upnivel3 b
    on a.cd_safra=b.cd_safra and a.cd_upnivel1=b.cd_upnivel1 and a.cd_upnivel3=b.cd_upnivel3
  left outer join pimscs.moduloadm c
    on b.cd_mod_adm=c.cd_mod_adm
  left outer join pimscs.funcionars d
    on c.cd_func=d.cd_func
  left outer join pimscs.uniadm e
    on c.cd_unid_adm=e.cd_unid_adm
  where
    a.instancia=''''NI01''''
    and a.dt_operacao between to_date(''''01/11/2017'''',''''dd/mm/yyyy'''') and to_date(''''31/03/2018'''',''''dd/mm/yyyy'''')
    and a.cd_operacao in(516,546)
    and a.cd_verba in(21410,21414,21416,21527,23410,23414,23416,23527)
  group by a.cd_upnivel1, a.cd_upnivel3, e.de_unid_adm, c.da_mod_adm||''''-''''|| d.de_func
 
  union all
 
  select
    loc.cd_upnivel1 as finca, loc.cd_upnivel3 as lote,
    (select de_upnivel1 from pimscs.upnivel1 where cd_upnivel1=loc.cd_upnivel1) as desc_finca,
    un.de_unid_adm as zona, md.da_mod_adm||''''-''''|| fn.de_func as supervisor, max(he.dt_operacao) as fecha,
    0 as pk_mobra, 0 as ton_est_mo,
    sum(de.qt_total) as ton_ins, sum(loc.qt_area_exec) as area_ins
    from pimscs.apt_ins_he he
  left outer join pimscs.apt_ins_de de
    on he.no_boletim=de.no_boletim and  he.instancia=de.instancia
  left outer join pimscs.apt_ins_loc loc
    on he.no_boletim=loc.no_boletim and he.instancia=loc.instancia
  left outer join pimscs.upnivel3 up
    on loc.cd_safra=up.cd_safra and loc.cd_upnivel1=up.cd_upnivel1 and loc.cd_upnivel3=up.cd_upnivel3
  left outer join pimscs.moduloadm md
    on md.cd_mod_adm=up.cd_mod_adm
  left outer join pimscs.funcionars fn
    on md.cd_func=fn.cd_func
  left outer join pimscs.uniadm un
    on md.cd_unid_adm=un.cd_unid_adm
  where he.instancia=''''NI01''''
    and he.dt_operacao between to_date(''''01/11/2017'''',''''dd/mm/yyyy'''') and to_date(''''31/03/2018'''',''''dd/mm/yyyy'''')
    and he.cd_operacao in(516,532,546)
  group by loc.cd_upnivel1, loc.cd_upnivel3, un.de_unid_adm, md.da_mod_adm||''''-''''||fn.de_func
  ) m
order by m.finca, m.lote
group by m.finca, m.lote, m.desc_finca, m.zona, m.supervisor

Gracias por su apoyo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Agrupar datos resultantes de una consulta UNION ALL

Publicado por leonardo_josue (1173 intervenciones) el 18/04/2018 19:54:54
Hola Mariano:

No nos dices con qué motor de BD's estás trabajando, ni tampoco nos dices cuál es el error que te está arrojando la consulta, por lo tanto resulta algo complicado darte una respuesta puntual. Ademas de estos datos, puedes postear el resultado de la subconsulta con UNION y a partir de esos datos dinos qué es lo que esperas obtener como salida, así podremos indicarte cuál es la mejor manera de hacer las agrupaciones.

De entrada de comento que el ORDER BY tiene que ir después del GROUP BY, es posible que ahí esté todo el problema, pero eso sólo lo sabremos con la descripción del error.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Agrupar datos resultantes de una consulta UNION ALL

Publicado por Mariano José (6 intervenciones) el 18/04/2018 20:02:03
Estoy usando SQL Server 2008-R2, adjunto un archivo con los datos resultantes de la consulta.

El error del mensaje es el siguientes:

El proveedor OLE DB "OraOLEDB.Oracle" del servidor vinculado "server" devolvió el mensaje "ORA-00933: SQL command not properly ended".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Agrupar datos resultantes de una consulta UNION ALL

Publicado por Mariano José (6 intervenciones) el 18/04/2018 20:28:04
Isaias, el linked server si devuelve datos, el problema se me genera cuando intento agrupar los datos resultantes del union all.

Si la consulta la ejecuto sin el agrupamiento los datos se generan correctamente.

Gracias por tu apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Agrupar datos resultantes de una consulta UNION ALL

Publicado por Isaias (1921 intervenciones) el 18/04/2018 22:29:29
Verificaste la liga?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Agrupar datos resultantes de una consulta UNION ALL

Publicado por Mariano José (6 intervenciones) el 19/04/2018 01:09:03
Isaias, yo soy nuevo en esto, me podrías indicar que se hace en el link que enviaste??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar