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