none
Usar funcion PIVOT o UNPIVOT RRS feed

  • Pregunta

  • Hola, necesito un ejemplo para usar UNPIVOT (creo), ya que tengo este caso, esta tabla, sale como resultado de una consulta.

    Jan    Feb    Mar     Apr    May    Jun    Jul      Ago    Sep    Oct    Nov    Dic
    311    276    286    334    240    267    251    296    259    228    218    334

    Ahora, lo que yo quiero hacer, es obtener el Max de esos valores, como podria realizarlo?

    Espero que puedan ayudarme.

     

    viernes, 21 de octubre de 2011 20:50

Respuestas

  • Puedes usar el operador UNPIVOT o el operador APPLY.

    with rs (Jan,Feb,Mar,Apr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic) as (
    select 311,276,286,334,240,267,251,296,259,228,218,334
    )
    select
    	max(U.val) as max_val
    from
    	rs
    	unpivot
    	(
    	val
    	for mes in ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Ago],[Sep],[Oct],[Nov],[Dic])
    	) as U;
    go
    with rs (Jan,Feb,Mar,Apr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic) as (
    select 311,276,286,334,240,267,251,296,259,228,218,334
    )
    select
    	max(A.val) as max_val
    from
    	rs
    	cross apply
    	(
    	values
    		([Jan]),
    		([Feb]),
    		([Mar]),
    		([Apr]),
    		([May]),
    		([Jun]),
    		([Jul]),
    		([Ago]),
    		([Sep]),
    		([Oct]),
    		([Nov]),
    		([Dic])
    	) as A(val);
    go
    

    No le prestes mucha atención a la expresion de tabla (CTE), pues la uso para simular la tabla de la que hablas.

     


    AMB

    Some guidelines for posting questions...

    viernes, 21 de octubre de 2011 23:06

Todas las respuestas

  • Hola. Revisa http://msdn.microsoft.com/es-es/library/ms177410.aspx para lo PIVOT y UNPIVOT...

    Danos más datos porque con lo que pones, Select MAX(...) From debería servirte, pero sospecho que no es así...

    Gracias y saludos,

     

     


    Guillermo Taylor F.

    IT Pro & Xbox gamer

    My blog

    viernes, 21 de octubre de 2011 23:06
  • Puedes usar el operador UNPIVOT o el operador APPLY.

    with rs (Jan,Feb,Mar,Apr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic) as (
    select 311,276,286,334,240,267,251,296,259,228,218,334
    )
    select
    	max(U.val) as max_val
    from
    	rs
    	unpivot
    	(
    	val
    	for mes in ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Ago],[Sep],[Oct],[Nov],[Dic])
    	) as U;
    go
    with rs (Jan,Feb,Mar,Apr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic) as (
    select 311,276,286,334,240,267,251,296,259,228,218,334
    )
    select
    	max(A.val) as max_val
    from
    	rs
    	cross apply
    	(
    	values
    		([Jan]),
    		([Feb]),
    		([Mar]),
    		([Apr]),
    		([May]),
    		([Jun]),
    		([Jul]),
    		([Ago]),
    		([Sep]),
    		([Oct]),
    		([Nov]),
    		([Dic])
    	) as A(val);
    go
    

    No le prestes mucha atención a la expresion de tabla (CTE), pues la uso para simular la tabla de la que hablas.

     


    AMB

    Some guidelines for posting questions...

    viernes, 21 de octubre de 2011 23:06
  • Puedes usar el operador UNPIVOT o el operador APPLY.

     

    with rs (Jan,Feb,Mar,Apr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic) as (
    select 311,276,286,334,240,267,251,296,259,228,218,334
    )
    select
    	max(U.val) as max_val
    from
    	rs
    	unpivot
    	(
    	val
    	for mes in ([Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Ago],[Sep],[Oct],[Nov],[Dic])
    	) as U;
    go
    with rs (Jan,Feb,Mar,Apr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic) as (
    select 311,276,286,334,240,267,251,296,259,228,218,334
    )
    select
    	max(A.val) as max_val
    from
    	rs
    	cross apply
    	(
    	values
    		([Jan]),
    		([Feb]),
    		([Mar]),
    		([Apr]),
    		([May]),
    		([Jun]),
    		([Jul]),
    		([Ago]),
    		([Sep]),
    		([Oct]),
    		([Nov]),
    		([Dic])
    	) as A(val);
    go
    

    No le prestes mucha atención a la expresion de tabla (CTE), pues la uso para simular la tabla de la que hablas.

     

     


    AMB

    Some guidelines for posting questions...

    Muchas gracias, lo hice con el UNPIVOT
    domingo, 23 de octubre de 2011 16:47