La mejor consulta para ...

12/10/2005 - 14:33 por Daniel | Informe spam
Buen dia

Quisiera saber cual seria la consulta mas optima para obtener lo siguiente:

Dado un escenario con 3 tablas;
Una para las sucursales [SUCURSALES]
Otra para los comprobantes de venta [COMPROBANTES] los cuales estan ligados
a cada sucursal
Otra para el detalle de los pagos [PAGOS] asociados al comprobante.
Y por último una tabla de formas de pago [FORMA_PAGO] que almacena el nombre
de cada forma de pago utilizada en [PAGOS]

En la empresa me piden un informe de detalle de cobranzas de ventas
encolumnado por forma de pago de la siguiente manera

SUCURSAL / TOTAL VENTAS / EFECTIVO / TICKET / TARJETAS / CHEQUES, ETC...

El resultado debe estar sumarizado por sucursal.

La mejor manera es haciendo una subconsulta por cada columna de importes?
Si uso agrupamiento me muestra 1 registro por cada forma de pago y yo
necesito 1 columna por cada forma de pago.


Gracias por leer hasta aca


Saludos

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
12/10/2005 - 15:29 | Informe spam
Necesitas un "crosstab query", lo puedes hacer en access, tambien si usas
crystal reports, pero sql server 2000 to tiene esa facilidad, aunque te
comento que la funcion 2005 cuanta con el operador PIVOT y UNPIVOT. Aca te
paso un par de links para que aprendas como lograr esto usando t-sql. En tu
caso particular, como no sabemos exactamente cuantos tipos de pagos tenemos o
si estos pueden cambiar, preferible usar un crosstab query dinamico.

HOW TO: Rotate a Table in SQL Server
http://support.microsoft.com/defaul...roduct=sql

Dynamic Crosstab Queries
http://www.windowsitpro.com/SQLServ...15608.html

Dynamic Cross-Tabs/Pivot Tables
http://www.sqlteam.com/item.asp?ItemID)55


AMB

"Daniel" wrote:

Buen dia

Quisiera saber cual seria la consulta mas optima para obtener lo siguiente:

Dado un escenario con 3 tablas;
Una para las sucursales [SUCURSALES]
Otra para los comprobantes de venta [COMPROBANTES] los cuales estan ligados
a cada sucursal
Otra para el detalle de los pagos [PAGOS] asociados al comprobante.
Y por último una tabla de formas de pago [FORMA_PAGO] que almacena el nombre
de cada forma de pago utilizada en [PAGOS]

En la empresa me piden un informe de detalle de cobranzas de ventas
encolumnado por forma de pago de la siguiente manera

SUCURSAL / TOTAL VENTAS / EFECTIVO / TICKET / TARJETAS / CHEQUES, ETC...

El resultado debe estar sumarizado por sucursal.

La mejor manera es haciendo una subconsulta por cada columna de importes?
Si uso agrupamiento me muestra 1 registro por cada forma de pago y yo
necesito 1 columna por cada forma de pago.


Gracias por leer hasta aca


Saludos



Respuesta Responder a este mensaje
#2 Daniel
12/10/2005 - 16:01 | Informe spam
Muy interesenate, no sabia de este crosstab, lo voy a estudiar.
Y efectivamente no se sabe cuantas formas de pago existen.

Muchas gracias

"Alejandro Mesa" escribió en el
mensaje news:
Necesitas un "crosstab query", lo puedes hacer en access, tambien si usas
crystal reports, pero sql server 2000 to tiene esa facilidad, aunque te
comento que la funcion 2005 cuanta con el operador PIVOT y UNPIVOT. Aca te
paso un par de links para que aprendas como lograr esto usando t-sql. En
tu
caso particular, como no sabemos exactamente cuantos tipos de pagos
tenemos o
si estos pueden cambiar, preferible usar un crosstab query dinamico.

HOW TO: Rotate a Table in SQL Server
http://support.microsoft.com/defaul...roduct=sql

Dynamic Crosstab Queries
http://www.windowsitpro.com/SQLServ...15608.html

Dynamic Cross-Tabs/Pivot Tables
http://www.sqlteam.com/item.asp?ItemID)55


AMB

"Daniel" wrote:

Buen dia

Quisiera saber cual seria la consulta mas optima para obtener lo
siguiente:

Dado un escenario con 3 tablas;
Una para las sucursales [SUCURSALES]
Otra para los comprobantes de venta [COMPROBANTES] los cuales estan
ligados
a cada sucursal
Otra para el detalle de los pagos [PAGOS] asociados al comprobante.
Y por último una tabla de formas de pago [FORMA_PAGO] que almacena el
nombre
de cada forma de pago utilizada en [PAGOS]

En la empresa me piden un informe de detalle de cobranzas de ventas
encolumnado por forma de pago de la siguiente manera

SUCURSAL / TOTAL VENTAS / EFECTIVO / TICKET / TARJETAS / CHEQUES, ETC...

El resultado debe estar sumarizado por sucursal.

La mejor manera es haciendo una subconsulta por cada columna de importes?
Si uso agrupamiento me muestra 1 registro por cada forma de pago y yo
necesito 1 columna por cada forma de pago.


Gracias por leer hasta aca


Saludos



Respuesta Responder a este mensaje
#3 Maxi
12/10/2005 - 16:50 | Informe spam
Hola Ale, la version 2005 lo soporta pero a mi gusto tiene algunas
limitaciones que hacen que esta instruccion en muchos casos sea inoperable,
no se si lo has probado pero hasta donde probe no me deja poner en el IN un
listado tomado de una tabla, supongamos que hablamos de años y no quiero
todos los años ir a modificar el query. Vos lo has probado a esto? porque
aun no he encontrado una solucion :(


Salu2
Maxi [MVP SQL SERVER]


"Alejandro Mesa" escribió en el
mensaje news:
Necesitas un "crosstab query", lo puedes hacer en access, tambien si usas
crystal reports, pero sql server 2000 to tiene esa facilidad, aunque te
comento que la funcion 2005 cuanta con el operador PIVOT y UNPIVOT. Aca te
paso un par de links para que aprendas como lograr esto usando t-sql. En
tu
caso particular, como no sabemos exactamente cuantos tipos de pagos
tenemos o
si estos pueden cambiar, preferible usar un crosstab query dinamico.

HOW TO: Rotate a Table in SQL Server
http://support.microsoft.com/defaul...roduct=sql

Dynamic Crosstab Queries
http://www.windowsitpro.com/SQLServ...15608.html

Dynamic Cross-Tabs/Pivot Tables
http://www.sqlteam.com/item.asp?ItemID)55


AMB

"Daniel" wrote:

Buen dia

Quisiera saber cual seria la consulta mas optima para obtener lo
siguiente:

Dado un escenario con 3 tablas;
Una para las sucursales [SUCURSALES]
Otra para los comprobantes de venta [COMPROBANTES] los cuales estan
ligados
a cada sucursal
Otra para el detalle de los pagos [PAGOS] asociados al comprobante.
Y por último una tabla de formas de pago [FORMA_PAGO] que almacena el
nombre
de cada forma de pago utilizada en [PAGOS]

En la empresa me piden un informe de detalle de cobranzas de ventas
encolumnado por forma de pago de la siguiente manera

SUCURSAL / TOTAL VENTAS / EFECTIVO / TICKET / TARJETAS / CHEQUES, ETC...

El resultado debe estar sumarizado por sucursal.

La mejor manera es haciendo una subconsulta por cada columna de importes?
Si uso agrupamiento me muestra 1 registro por cada forma de pago y yo
necesito 1 columna por cada forma de pago.


Gracias por leer hasta aca


Saludos



Respuesta Responder a este mensaje
#4 Alejandro Mesa
12/10/2005 - 17:47 | Informe spam
Maxi,

Todos los ejemplos que he visto usan una lista estatica y de verdad que no
he jugado mucho con este operador. Casi siempre hago este tipo de reportes
con la herramienta de reporte. Si este operador no nos deja pasar la lista de
forma dinamica (como el ejemplo que planteas, osea, seleccionando la lista
desde una tabla) entonces el operador tiene una limitacion grande porque lo
mas interesante de estos reportes es que muchas veces no se sabe cuantos
elementos pueden haber en la lista. Quizas para la version que sigue a la
2005.


AMB


AMB

"Maxi" wrote:

Hola Ale, la version 2005 lo soporta pero a mi gusto tiene algunas
limitaciones que hacen que esta instruccion en muchos casos sea inoperable,
no se si lo has probado pero hasta donde probe no me deja poner en el IN un
listado tomado de una tabla, supongamos que hablamos de años y no quiero
todos los años ir a modificar el query. Vos lo has probado a esto? porque
aun no he encontrado una solucion :(


Salu2
Maxi [MVP SQL SERVER]


"Alejandro Mesa" escribió en el
mensaje news:
> Necesitas un "crosstab query", lo puedes hacer en access, tambien si usas
> crystal reports, pero sql server 2000 to tiene esa facilidad, aunque te
> comento que la funcion 2005 cuanta con el operador PIVOT y UNPIVOT. Aca te
> paso un par de links para que aprendas como lograr esto usando t-sql. En
> tu
> caso particular, como no sabemos exactamente cuantos tipos de pagos
> tenemos o
> si estos pueden cambiar, preferible usar un crosstab query dinamico.
>
> HOW TO: Rotate a Table in SQL Server
> http://support.microsoft.com/defaul...roduct=sql
>
> Dynamic Crosstab Queries
> http://www.windowsitpro.com/SQLServ...15608.html
>
> Dynamic Cross-Tabs/Pivot Tables
> http://www.sqlteam.com/item.asp?ItemID)55
>
>
> AMB
>
> "Daniel" wrote:
>
>> Buen dia
>>
>> Quisiera saber cual seria la consulta mas optima para obtener lo
>> siguiente:
>>
>> Dado un escenario con 3 tablas;
>> Una para las sucursales [SUCURSALES]
>> Otra para los comprobantes de venta [COMPROBANTES] los cuales estan
>> ligados
>> a cada sucursal
>> Otra para el detalle de los pagos [PAGOS] asociados al comprobante.
>> Y por último una tabla de formas de pago [FORMA_PAGO] que almacena el
>> nombre
>> de cada forma de pago utilizada en [PAGOS]
>>
>> En la empresa me piden un informe de detalle de cobranzas de ventas
>> encolumnado por forma de pago de la siguiente manera
>>
>> SUCURSAL / TOTAL VENTAS / EFECTIVO / TICKET / TARJETAS / CHEQUES, ETC...
>>
>> El resultado debe estar sumarizado por sucursal.
>>
>> La mejor manera es haciendo una subconsulta por cada columna de importes?
>> Si uso agrupamiento me muestra 1 registro por cada forma de pago y yo
>> necesito 1 columna por cada forma de pago.
>>
>>
>> Gracias por leer hasta aca
>>
>>
>> Saludos
>>
>>
>>



Respuesta Responder a este mensaje
#5 Maxi
12/10/2005 - 18:14 | Informe spam
Eso mismo me pregunto!! opino como vos, por eso te pregunte a ver si lo
habias probado :-S


Salu2
Maxi [MVP SQL SERVER]


"Alejandro Mesa" escribió en el
mensaje news:
Maxi,

Todos los ejemplos que he visto usan una lista estatica y de verdad que no
he jugado mucho con este operador. Casi siempre hago este tipo de reportes
con la herramienta de reporte. Si este operador no nos deja pasar la lista
de
forma dinamica (como el ejemplo que planteas, osea, seleccionando la lista
desde una tabla) entonces el operador tiene una limitacion grande porque
lo
mas interesante de estos reportes es que muchas veces no se sabe cuantos
elementos pueden haber en la lista. Quizas para la version que sigue a la
2005.


AMB


AMB

"Maxi" wrote:

Hola Ale, la version 2005 lo soporta pero a mi gusto tiene algunas
limitaciones que hacen que esta instruccion en muchos casos sea
inoperable,
no se si lo has probado pero hasta donde probe no me deja poner en el IN
un
listado tomado de una tabla, supongamos que hablamos de años y no quiero
todos los años ir a modificar el query. Vos lo has probado a esto? porque
aun no he encontrado una solucion :(


Salu2
Maxi [MVP SQL SERVER]


"Alejandro Mesa" escribió en el
mensaje news:
> Necesitas un "crosstab query", lo puedes hacer en access, tambien si
> usas
> crystal reports, pero sql server 2000 to tiene esa facilidad, aunque te
> comento que la funcion 2005 cuanta con el operador PIVOT y UNPIVOT. Aca
> te
> paso un par de links para que aprendas como lograr esto usando t-sql.
> En
> tu
> caso particular, como no sabemos exactamente cuantos tipos de pagos
> tenemos o
> si estos pueden cambiar, preferible usar un crosstab query dinamico.
>
> HOW TO: Rotate a Table in SQL Server
> http://support.microsoft.com/defaul...roduct=sql
>
> Dynamic Crosstab Queries
> http://www.windowsitpro.com/SQLServ...15608.html
>
> Dynamic Cross-Tabs/Pivot Tables
> http://www.sqlteam.com/item.asp?ItemID)55
>
>
> AMB
>
> "Daniel" wrote:
>
>> Buen dia
>>
>> Quisiera saber cual seria la consulta mas optima para obtener lo
>> siguiente:
>>
>> Dado un escenario con 3 tablas;
>> Una para las sucursales [SUCURSALES]
>> Otra para los comprobantes de venta [COMPROBANTES] los cuales estan
>> ligados
>> a cada sucursal
>> Otra para el detalle de los pagos [PAGOS] asociados al comprobante.
>> Y por último una tabla de formas de pago [FORMA_PAGO] que almacena el
>> nombre
>> de cada forma de pago utilizada en [PAGOS]
>>
>> En la empresa me piden un informe de detalle de cobranzas de ventas
>> encolumnado por forma de pago de la siguiente manera
>>
>> SUCURSAL / TOTAL VENTAS / EFECTIVO / TICKET / TARJETAS / CHEQUES,
>> ETC...
>>
>> El resultado debe estar sumarizado por sucursal.
>>
>> La mejor manera es haciendo una subconsulta por cada columna de
>> importes?
>> Si uso agrupamiento me muestra 1 registro por cada forma de pago y yo
>> necesito 1 columna por cada forma de pago.
>>
>>
>> Gracias por leer hasta aca
>>
>>
>> Saludos
>>
>>
>>



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