locked
consulta de sql RRS feed

  • Pregunta

  • buanas a atodos de ante mano quiero agredecerles por la ayuda que puedan darme, tengo un problema al querer hacer una consulta de una tabla donde registro todos los comprobantes de pago de alquiler y mantenimiento. lo que kiero hacer es que al momento de condidionarle en codigo dl local y tipo de servicio que puede ser alquler o mantenimiento me muestre todos sus pagos. de la sigueinte manera ..dejo el archivo de texto .en este link http://cid-69bf0a36e012fdeb.skydrive.live.com/self.aspx/P%c3%bablico/CONSULTA.txt

     

    lunes, 19 de octubre de 2009 21:43

Respuestas

  • Es una consulta muy molesta a causa de la columna TOTALMES. Por lo que se ve, es del tipo "running total", es decir, tiene que ir acumulando todos los pagos del mes, y mostrar el resultado únicamente cuando la línea es la última de un mes dado. Aunque esto se puede calcular mediante una subconsulta anidada en la consulta principal, este es uno de los pocos casos en que se recomienda usar en su lugar un cursor, ya que la subconsulta en cuestión escala terriblemente mal (peor todavía que el cursor).

    Por lo demás, la consulta no tiene mucho misterio: Es simplemente un Select de los campos deseados con un Where que aplique las dos condiciones y un Order By Mes, Ano.

    Veo que hay una columna con el "Cliente", que no figura en la tabla de muestra. Me imagino que lo tienes en otra tabla separada y que se le podrá aplicar un Join con la principal.

    También hay una columna que lleva el Mes escrito en letras, mientras que la tabla lo tiene en forma numérica. Para resolver esto, puedes usar un Case..When, o una función escalar, o una tabla paralela que tenga 12 registros con el número y nombre del mes, y hacerle un Join con la consulta principal.

    Pero una vez construida la Select con todos los criterios anteriores, tendrás que usarla para abrir un cursor y usar el cursor para ir calculando el acumulado de cada mes para poder mostrarlo en la columna TOTALMES.
    • Propuesto como respuesta Rafael Fagundes jueves, 5 de noviembre de 2009 18:13
    • Marcado como respuesta Rafael Fagundes viernes, 13 de noviembre de 2009 17:52
    martes, 20 de octubre de 2009 14:50
    • Propuesto como respuesta Rafael Fagundes jueves, 5 de noviembre de 2009 18:13
    • Marcado como respuesta Rafael Fagundes viernes, 13 de noviembre de 2009 17:52
    martes, 20 de octubre de 2009 17:55
    Moderador

Todas las respuestas

  • Yo la verdad es que no he comprendido muy bien lo que quieres hacer. En cualquier caso, el script de creación de las tablas involucradas y un par de datos de ejemplo vienen bien para intentar solucionar tu problema
    martes, 20 de octubre de 2009 7:24
  • Yo la verdad es que no he comprendido muy bien lo que quieres hacer. En cualquier caso, el script de creación de las tablas involucradas y un par de datos de ejemplo vienen bien para intentar solucionar tu problema

    DISCULPA POR NO REALIZAR CON CLARIDAD LA PREGUNTA PERO MIRA ESTE ARCHIVO PLANO DONDE ESTA LA ESTRUCTURA DE LA TABLA DE DONDE QUIERO HACER LA CONSULTA. EN SI LA CONSULTA ES PARA FILTRAR TODOS LOS PAGOS QUE SE HIZO DE UN LOCAL TANTO COMO ALQUILER COMO MANTENIMIENTO AQUI  TE DEJO DE NUEVO EL LINK MODIFICADO  ESPERO COMPRENDA GRACIA POR EL INTERES
    link http://cid-69bf0a36e012fdeb.skydrive.live.com/self.aspx/P%c3%bablico/CONSULTA.txt
    martes, 20 de octubre de 2009 13:46
  • Es una consulta muy molesta a causa de la columna TOTALMES. Por lo que se ve, es del tipo "running total", es decir, tiene que ir acumulando todos los pagos del mes, y mostrar el resultado únicamente cuando la línea es la última de un mes dado. Aunque esto se puede calcular mediante una subconsulta anidada en la consulta principal, este es uno de los pocos casos en que se recomienda usar en su lugar un cursor, ya que la subconsulta en cuestión escala terriblemente mal (peor todavía que el cursor).

    Por lo demás, la consulta no tiene mucho misterio: Es simplemente un Select de los campos deseados con un Where que aplique las dos condiciones y un Order By Mes, Ano.

    Veo que hay una columna con el "Cliente", que no figura en la tabla de muestra. Me imagino que lo tienes en otra tabla separada y que se le podrá aplicar un Join con la principal.

    También hay una columna que lleva el Mes escrito en letras, mientras que la tabla lo tiene en forma numérica. Para resolver esto, puedes usar un Case..When, o una función escalar, o una tabla paralela que tenga 12 registros con el número y nombre del mes, y hacerle un Join con la consulta principal.

    Pero una vez construida la Select con todos los criterios anteriores, tendrás que usarla para abrir un cursor y usar el cursor para ir calculando el acumulado de cada mes para poder mostrarlo en la columna TOTALMES.
    • Propuesto como respuesta Rafael Fagundes jueves, 5 de noviembre de 2009 18:13
    • Marcado como respuesta Rafael Fagundes viernes, 13 de noviembre de 2009 17:52
    martes, 20 de octubre de 2009 14:50
  • Es una consulta muy molesta a causa de la columna TOTALMES. Por lo que se ve, es del tipo "running total", es decir, tiene que ir acumulando todos los pagos del mes, y mostrar el resultado únicamente cuando la línea es la última de un mes dado. Aunque esto se puede calcular mediante una subconsulta anidada en la consulta principal, este es uno de los pocos casos en que se recomienda usar en su lugar un cursor, ya que la subconsulta en cuestión escala terriblemente mal (peor todavía que el cursor).

    Por lo demás, la consulta no tiene mucho misterio: Es simplemente un Select de los campos deseados con un Where que aplique las dos condiciones y un Order By Mes, Ano.

    Veo que hay una columna con el "Cliente", que no figura en la tabla de muestra. Me imagino que lo tienes en otra tabla separada y que se le podrá aplicar un Join con la principal.

    También hay una columna que lleva el Mes escrito en letras, mientras que la tabla lo tiene en forma numérica. Para resolver esto, puedes usar un Case..When, o una función escalar, o una tabla paralela que tenga 12 registros con el número y nombre del mes, y hacerle un Join con la consulta principal.

    Pero una vez construida la Select con todos los criterios anteriores, tendrás que usarla para abrir un cursor y usar el cursor para ir calculando el acumulado de cada mes para poder mostrarlo en la columna TOTALMES.
    Muchas gracias por la ayuda pero por favor me podrias dar algun ejemplo de una consulta parecida si no es tanta molestiia...o un link donde aya ejemplos parecidos
    martes, 20 de octubre de 2009 17:05
    • Propuesto como respuesta Rafael Fagundes jueves, 5 de noviembre de 2009 18:13
    • Marcado como respuesta Rafael Fagundes viernes, 13 de noviembre de 2009 17:52
    martes, 20 de octubre de 2009 17:55
    Moderador
  • Hola.

    Te paso un par de ejemplos:




    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)

    muchas gracias alberto me sirvio de mucho los ejemplos que me pasaste, ya logre hacer mi consulta gracias
    viernes, 13 de noviembre de 2009 18:59