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

#6 José Antonio
10/03/2005 - 18:19 | Informe spam
Perdon, me he equivocado de hilo.

"José Antonio" escribió en el
mensaje news:
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
#7 José Antonio
10/03/2005 - 18:19 | Informe spam
Ok. funciona perfectamente.

Saludos
"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
#8 Alejandro Mesa
10/03/2005 - 18:25 | Informe spam
José Antonio,

No entiendo tu pregunta. A que te refieres cuando dices "una de ellas"?


AMB


"José Antonio" wrote:

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.
>>
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida