Clausula ROLLUP

10/03/2005 - 13:24 por José Antonio | Informe spam
En una consulta que presenta el siguiente resultado:


Mes Ano1 Ano2 Ano3
Enero 10 20 18
Febrero 20 17 5
etc.
asi hasta diciembre.

El select de la consulta es:

select mes,ano1,ano2,ano3 from acumulado where cliente=@cliente

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque si
agrupo por meses me da una fila adicional por cada mes.

Saludos y gracias.

Preguntas similare

Leer las respuestas

#1 Tinoco
10/03/2005 - 14:09 | Informe spam
Hola Jose,

Porque no intenta asociar (UNION) el resultado actual con el Select que
tiene los valores agrupados.

Hermilson Tinoco
Colombia

"José Antonio" wrote:

En una consulta que presenta el siguiente resultado:


Mes Ano1 Ano2 Ano3
Enero 10 20 18
Febrero 20 17 5
etc.
asi hasta diciembre.

El select de la consulta es:

select mes,ano1,ano2,ano3 from acumulado where cliente=@cliente

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque si
agrupo por meses me da una fila adicional por cada mes.

Saludos y gracias.




Respuesta Responder a este mensaje
#2 José Antonio
10/03/2005 - 14:17 | Informe spam
No entiendo a que te refieres exactamente.
"Tinoco" escribió en el mensaje
news:
Hola Jose,

Porque no intenta asociar (UNION) el resultado actual con el Select que
tiene los valores agrupados.

Hermilson Tinoco
Colombia

"José Antonio" wrote:

En una consulta que presenta el siguiente resultado:


Mes Ano1 Ano2 Ano3
Enero 10 20 18
Febrero 20 17 5
etc.
asi hasta diciembre.

El select de la consulta es:

select mes,ano1,ano2,ano3 from acumulado where cliente=@cliente

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace
ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque
si
agrupo por meses me da una fila adicional por cada mes.

Saludos y gracias.




Respuesta Responder a este mensaje
#3 José Antonio
10/03/2005 - 14:25 | Informe spam
Perdona, ya me he dado cuenta de lo que dices.
Select 'Totales',sum(ano1),sum(ano2),sum(ano3)
en union con la otra consulta.

"José Antonio" escribió en el
mensaje news:
No entiendo a que te refieres exactamente.
"Tinoco" escribió en el mensaje
news:
Hola Jose,

Porque no intenta asociar (UNION) el resultado actual con el Select que
tiene los valores agrupados.

Hermilson Tinoco
Colombia

"José Antonio" wrote:

En una consulta que presenta el siguiente resultado:


Mes Ano1 Ano2 Ano3
Enero 10 20 18
Febrero 20 17 5
etc.
asi hasta diciembre.

El select de la consulta es:

select mes,ano1,ano2,ano3 from acumulado where cliente=@cliente

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace
ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque
si
agrupo por meses me da una fila adicional por cada mes.

Saludos y gracias.










Respuesta Responder a este mensaje
#4 Alejandro Mesa
10/03/2005 - 14:47 | Informe spam
José Antonio,

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque si
agrupo por meses me da una fila adicional por cada mes.



Eso ocurre si tienes meses repetidos, de lo contrario no te dara la fila por
mes sino una sola de totales.

Ejemplo:

declare @t table (
mes varchar(15),
ano1 int,
ano2 int,
ano3 int
)

insert into @t values('Enero', 10, 20, 18)
insert into @t values('Febrero', 20, 17, 5)

select
case when grouping(mes) = 1 then 'Total' else mes end as mes,
sum(ano1) as ano1,
sum(ano2) as ano2,
sum(ano3) as ano3
from
@t
group by
mes with rollup
order by
grouping(mes) asc,
case mes
when 'Enero' then 1
when 'Febrero' then 2
end asc
go

Result:

mes ano1 ano2 ano3
Enero 10 20 18
Febrero 20 17 5
Total 30 37 23

(3 row(s) affected)


AMB

"José Antonio" wrote:

En una consulta que presenta el siguiente resultado:


Mes Ano1 Ano2 Ano3
Enero 10 20 18
Febrero 20 17 5
etc.
asi hasta diciembre.

El select de la consulta es:

select mes,ano1,ano2,ano3 from acumulado where cliente=@cliente

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque si
agrupo por meses me da una fila adicional por cada mes.

Saludos y gracias.




Respuesta Responder a este mensaje
#5 José Antonio
10/03/2005 - 18:17 | Informe spam
Gracias por la aclaración, entonces no se aconseja en especial usar una de
ellas?


"Alejandro Mesa" escribió en el
mensaje news:
José Antonio,

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace
ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque
si
agrupo por meses me da una fila adicional por cada mes.



Eso ocurre si tienes meses repetidos, de lo contrario no te dara la fila
por
mes sino una sola de totales.

Ejemplo:

declare @t table (
mes varchar(15),
ano1 int,
ano2 int,
ano3 int
)

insert into @t values('Enero', 10, 20, 18)
insert into @t values('Febrero', 20, 17, 5)

select
case when grouping(mes) = 1 then 'Total' else mes end as mes,
sum(ano1) as ano1,
sum(ano2) as ano2,
sum(ano3) as ano3
from
@t
group by
mes with rollup
order by
grouping(mes) asc,
case mes
when 'Enero' then 1
when 'Febrero' then 2
end asc
go

Result:

mes ano1 ano2 ano3
Enero 10 20 18
Febrero 20 17 5
Total 30 37 23

(3 row(s) affected)


AMB

"José Antonio" wrote:

En una consulta que presenta el siguiente resultado:


Mes Ano1 Ano2 Ano3
Enero 10 20 18
Febrero 20 17 5
etc.
asi hasta diciembre.

El select de la consulta es:

select mes,ano1,ano2,ano3 from acumulado where cliente=@cliente

Hay alguna opción para que en el mismo resultado me devuelva una fila
adicional con los totales de Ano1,Ano2 y Ano3 de la forma que lo hace
ROLLUP
con una clausula group by?. ya que en este caso no puede agrupar, porque
si
agrupo por meses me da una fila adicional por cada mes.

Saludos y gracias.




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida