Pregunta

Tengo el siguiente conjunto de resultados:

  

Tipo | método | Ascenderá

     

Tipo 1 Efectivo Monto
  Tipo1 cantidad del cheque
  Tipo2 Efectivo Monto
  Tipo2 cantidad del cheque
  Tipo 3 Efectivo Monto
  Type3 cantidad del cheque


Y quiero que se vea como esto:

  

Tipo | dinero en efectivo | Verificar

     

Tipo 1 Cantidad Cantidad
  Tipo 2 Cantidad Cantidad
  Cantidad Cantidad Tipo 3

¿Cómo puedo lograr esto en T-SQL (2005 bien sintaxis)? Necesito hacer pivotar por tipo (1, 2, 3 ...)

¿Fue útil?

Solución

Aquí hay un intento en el pivote:

select *
from YourTable
PIVOT (sum(amount) FOR Method in (Cash,Check)) as Y

Dado que se trata de sólo dos columnas, podría tratar con una combinación:

select
    type
,   cash = a.amount
,   check = b.amount
from yourtable a
full join yourtable b on a.type = b.type
where a.method = 'cash' or b.method = 'Check'

Otros consejos

O mejor aún:

select
  Type
, Cash  = sum(case when Method = 'Cash'  then Amount end)
, Check = sum(case when Method = 'Check' then Amount end) 
from yourtable
group by 
  Type

Añadir un ELSE 0 a las instrucciones CASE en su caso.

Esta forma es más flexible que el operador PIVOT y no necesita unirse a un COMPLETO. agregación sólo directamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top