Principales respuestas
Usando Pivot con varios valores

-
Muy buenas, tengo una consulta SQL que muestra la información deseada.
SELECT cliente_codigo, cliente_nombre, fecha_vencimiento, dias_vencidos, MONTH(fecha_vencimiento) as mes, YEAR(fecha_vencimiento) as anio, sum(importes) as importes, sum(pago) as pago, sum(saldo) as saldo FROM tmp_vtaCobranzas GROUP By cliente_codigo, cliente_buscar, cliente_nombre, fecha_vencimiento, dias_vencidos
Esa información lo he pasado para verlo con un PIVOT. Pero en este, lo que se desea es agregar dos campos mas que son, los pago y los saldo, que en el pivot están comentado.
Habría alguna forma de agregarlo en el PIVOT, o hay que usar otra forma, y si es otra forma, como seria.
Select [anio], cliente_codigo, cliente_nombre, [1] Ene, [2] Feb, [3] Mar, [4] Abr, [5] May, [6] Jun, [7] Jul, [8] Ago, [9] Sep, [10] Oct, [11] Nov, [12] Dic FROM (SELECT YEAR(fecha_vencimiento) as [anio], cliente_codigo, cliente_nombre, MONTH(fecha_vencimiento) as mes, dias_vencidos, importes --, sum(pago), SUM(saldo) FROM tmp_vtaCobranzas --WHERE fecha_vencimiento >= '2015-01-01' AND fecha_vencimiento <= '2015-12-31' ) as Datos PIVOT ( SUM(importes) for Datos.mes IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) ) as PivotTable
Gracias
SagaMoal.
Pregunta
Respuestas
-
En ese caso pudieras usar pivot dinamico. Busca en este foro por esos terminos y encontraras varios ejemplos o si prefieres postea la estructurade las tablas (solo columnas de interes), asi como data de ejemplo en forma de sentencias insert para nosotros poder tener con que trabajar sin perder tiempo simulando tu ambiente.
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas- Propuesto como respuesta Juan MondragónModerator martes, 24 de octubre de 2017 21:40
- Marcado como respuesta Juan MondragónModerator miércoles, 08 de noviembre de 2017 22:34
Todas las respuestas
-
La operacion de pivoteo (transponer filas a columnas) se realiza de la sgte forma:
- Agrupar (group by)
- Regar valores (expresion CASE)
- Agregar (MIN, MAX, SUM, etc.)El operador PIVOT sigue el mismo principio pero solo se puede agregar una expresion a la vez. Por eso es mejor usar la forma comun.
SELECT cliente_codigo, cliente_nombre, dias_vencidos, SUM(CASE WHEN fecha_vencimiento >= '20150101' AND fecha_vencimiento < '20150201' THEN importes ELSE 0 END) AS importes_201501, SUM(CASE WHEN fecha_vencimiento >= '20150101' AND fecha_vencimiento < '20150201' THEN pago ELSE 0 END) AS pago_201501, SUM(CASE WHEN fecha_vencimiento >= '20150101' AND fecha_vencimiento < '20150201' THEN saldo ELSE 0 END) AS saldo_201501, ... SUM(CASE WHEN fecha_vencimiento >= '20151201' AND fecha_vencimiento < '20160101' THEN importes ELSE 0 END) AS importes_201512, SUM(CASE WHEN fecha_vencimiento >= '20151201' AND fecha_vencimiento < '20160101' THEN pago ELSE 0 END) AS pago_201512, SUM(CASE WHEN fecha_vencimiento >= '20151201' AND fecha_vencimiento < '20160101' THEN saldo ELSE 0 END) AS saldo_201512 FROM tmp_vtaCobranzas WHERE fecha_vencimiento >= '20150101' AND fecha_vencimiento < '20160101' GROUP BY cliente_codigo, cliente_nombre, dias_vencidos;
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas- Editado HunchbackMVP miércoles, 11 de octubre de 2017 12:29
- Propuesto como respuesta Juan MondragónModerator miércoles, 11 de octubre de 2017 18:41
-
-
En ese caso pudieras usar pivot dinamico. Busca en este foro por esos terminos y encontraras varios ejemplos o si prefieres postea la estructurade las tablas (solo columnas de interes), asi como data de ejemplo en forma de sentencias insert para nosotros poder tener con que trabajar sin perder tiempo simulando tu ambiente.
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas- Propuesto como respuesta Juan MondragónModerator martes, 24 de octubre de 2017 21:40
- Marcado como respuesta Juan MondragónModerator miércoles, 08 de noviembre de 2017 22:34
-