none
ayuda con consulta sql RRS feed

  • Pregunta

  • Hola buenas, un saludo. 

    Tengo un problema con una consulta:

    Tengo tres tablas, una ARTICULOS que contiene los articulos que se venden en un restaurante, otra TIQUETSCAB que contiene las cabeceras de los tiquets de ventas del restaurante y otra TIQUETSLIN que contiene las lineas de los tiquets de la tabla anterior.

    Me gustaria poder contar entre dos fechas cuantos dias aparece un articulo, aunque un dia ese articulo se haya vendido muchas veces, lo unico que me interesa es saber cuantos dias aparece ese articulo en question, en la tabla tiquetscap guardamos las fechas de los tiquets. El objetivo es calcular una media de ese articulo pero solo en los dias que se ha vendido. 

    No se si me explicado desmasiado bien, pero es que no se por donde empezar. No doy mas detalles de las tablas ya que lo que me gustaria es saber por donde tengo que ir no que alguien me realice la solución. Se que podria usar COUNT o IF EXISTS

    Agradezco cualquier pista.

    Muchas gracias, un saludo.

    sábado, 8 de abril de 2017 14:56

Respuestas

  • Gracias williams, me da error de sintaxis, he probado de varias maneras pero me dice que error de sitanxis cerca de ')'. estoy usando sqlserver express 2012

    Comprenderás que si no adjuntas el código que llevas escrito no tengo forma de saber cual es el error de sintaxis que has cometido. El ejemplo adjunto es sólo un acercamiento que ayudará a resolver el caso, analiza y realiza las correctivas necesarias, como por ejemplo colocar un alias a la tabla derivada (no escribo la consulta completa porque solicitas únicamente una pista, por tanto entiendo no tienes problemas en escribir consultas t-sql).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta aratar79 sábado, 8 de abril de 2017 19:08
    sábado, 8 de abril de 2017 18:28
  • Hola aratar79

    A willams se le paso un alias al final, pruébalo así

    SELECT COUNT(*) FROM 
        (SELECT Fecha FROM Tabla GROUP BY Fecha) as Tabla

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    • Editado Brayan De La Cruz sábado, 8 de abril de 2017 18:13
    • Marcado como respuesta aratar79 sábado, 8 de abril de 2017 19:07
    sábado, 8 de abril de 2017 18:12

Todas las respuestas

  • De esta manera me devuelve los dias que aparece ese articulo, pero como cuento los registros?, count no me sirve, count me devuelve las veces que aparece el articulo en cuestion

    SELECT  TIQUETSCAB.FECHA 
    
    FROM TIQUETSCAB, TIQUETSLIN, ARTICULOS  
    WHERE ARTICULOS.DESCRIPCION LIKE 'MENU%' AND TIQUETSCAB.FO = TIQUETSLIN.FO AND TIQUETSCAB.SERIE = TIQUETSLIN.SERIE   AND TIQUETSCAB.NUMERO = TIQUETSLIN.NUMERO 
          AND TIQUETSCAB.N = TIQUETSLIN.N   AND ((TIQUETSCAB.FECHAANULACION <= '01/01/1900') OR (TIQUETSCAB.FECHAANULACION IS NULL))   
          AND TIQUETSLIN.CODARTICULO = ARTICULOS.CODARTICULO   AND (TIQUETSCAB.FECHA >=  CONVERT(DATETIME,'2017-02-1 06:00:00',102)   
          AND  TIQUETSCAB.FECHA <   CONVERT(DATETIME,'2017-02-7 06:00:00',102))   AND (TIQUETSLIN.DETALLEMODIF = 0) 
    
    GROUP BY ARTICULOS.DESCRIPCION, TIQUETSCAB.FECHA


    • Editado aratar79 sábado, 8 de abril de 2017 15:31
    sábado, 8 de abril de 2017 15:29
  • De esta manera me devuelve los dias que aparece ese articulo, pero como cuento los registros?, count no me sirve, count me devuelve las veces que aparece el articulo en cuestion

    No agrupes por producto, agrupa únicamente por fecha (descarta el tiempo en caso lo tenga), sobre el conjunto resultante recupera la cuenta de filas:

    SELECT COUNT(*) FROM 
        (SELECT Fecha FROM Tabla GROUP BY Fecha)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 8 de abril de 2017 15:54
  • Gracias williams, me da error de sintaxis, he probado de varias maneras pero me dice que error de sitanxis cerca de ')'. estoy usando sqlserver express 2012

    un saludo

    sábado, 8 de abril de 2017 17:24
  • Hola aratar79

    A willams se le paso un alias al final, pruébalo así

    SELECT COUNT(*) FROM 
        (SELECT Fecha FROM Tabla GROUP BY Fecha) as Tabla

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.


    • Editado Brayan De La Cruz sábado, 8 de abril de 2017 18:13
    • Marcado como respuesta aratar79 sábado, 8 de abril de 2017 19:07
    sábado, 8 de abril de 2017 18:12
  • Gracias williams, me da error de sintaxis, he probado de varias maneras pero me dice que error de sitanxis cerca de ')'. estoy usando sqlserver express 2012

    Comprenderás que si no adjuntas el código que llevas escrito no tengo forma de saber cual es el error de sintaxis que has cometido. El ejemplo adjunto es sólo un acercamiento que ayudará a resolver el caso, analiza y realiza las correctivas necesarias, como por ejemplo colocar un alias a la tabla derivada (no escribo la consulta completa porque solicitas únicamente una pista, por tanto entiendo no tienes problemas en escribir consultas t-sql).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta aratar79 sábado, 8 de abril de 2017 19:08
    sábado, 8 de abril de 2017 18:28
  • Gracias, funciona perfecto!!!
    sábado, 8 de abril de 2017 19:07