none
Consulta SQL no logro el resultado buscado. RRS feed

  • Pregunta

  • Hola a tod@s. Gracias por vuestra atención.

    Tengo instalado SQL Server Management Studio 18 y SQL 2012 Express.

    Estoy trabajando con un programa de gestión comercial para tallas y colores y quiero obtener los registros de compras de unos artículos que cumplan unas condiciones. Para ello estoy creando una consulta desde Studio 18. (Nota: Intervienen 6 tablas, adjunto consulta)

    La consulta me devuelve la información, pero con un error que no encuentro como arreglarlo, me explico:

    En la línea de compras de un artículo que tiene diferentes tallas, puedo poner cuantas unidades compro de una o varias tallas.

    Cuando ejecuto la consulta, si he comprado en una sola talla, la información obtenida es correcta. Pero, si he comprado varias tallas en la línea, en lugar de obtener un registro por talla obtengo tantos registros como tallas he comprado. Es decir, si introduzco cinco líneas de compra con una sola talla por línea, la información es correcta (5 registros); pero si introduzco cinco líneas con varias tallas por linea, obtengo tantos registros como tallas por línea he comprado. Ejemplo:

    Articulo 1, 1 unidad de las tallas 1 y 3

    Articulo 2, 2 unidades de las tallas 2 y 3

    Información que quiero obtener                                        Información obtenida

    Articulo    Talla      Cantidad                                              Articulo     Talla     Cantidad

        1             1            1                                                       1             1             1

        1             3            1                                                       1             1             1

        2             2            2                                                       1             3             1

        2             3            2                                                       1             3             1   (Cuatro registros en lugar de dos)

    Texto de la consulta:

    USE [BaseDeDatos];
    GO
    IF OBJECT_ID('tempdb..TablaTemporal') IS NOT NULL
       DROP TABLE #TablaTemporal;
    GO
    CREATE TABLE #TablaTemporal (
        TmpCod_Articulo NUMERIC (13,0) NOT NULL,
    	TmpDescripcion VARCHAR (10) NOT NULL,
    	TmpFecha_Albaran DATETIME NOT NULL,
    	TmpUds DECIMAL (14,5) NOT NULL
    	)
    
    INSERT INTO #TablaTemporal
          (TmpCod_Articulo, TmpDescripcion, TmpFecha_Albaran, TmpUds)
    
    SELECT
    	alb_sltyc.Cod_Articulo, art_tycdef.Descripcion, Fecha_Albaran, alb_sltyc.Uds 
    
    FROM 
    -- Cabecera de albaranes
    	AlbaranesC_Cabecera AS alb_cab
    -- Lineas de albaranes
    	INNER JOIN AlbaranesC_Lineas AS alb_lin
    		ON alb_cab.Serie_Albaran = alb_lin.Serie_Albaran AND 
    		    alb_cab.Codigo = alb_lin.Codigo
    -- Sublineas de albaranes
    	INNER JOIN AlbaranesC_Sublineas_TyC AS alb_sltyc 
    		ON alb_lin.Serie_Albaran = alb_sltyc.Serie_Albaran AND
    			alb_lin.Codigo = alb_sltyc.Codigo and 
    			alb_lin.linea = alb_sltyc.Linea and
    			alb_lin.Cod_Articulo = alb_sltyc.Cod_Articulo
    -- Fichero de articulos general
    	INNER JOIN Articulos AS art_gen ON alb_sltyc.Cod_Articulo = art_gen.Codigo
    -- Fichero de articulos TyC
    	INNER JOIN Articulos_TyC AS art_tyc ON art_gen.Codigo = art_tyc.Articulo
    -- Fichero de articulos Tyc Definicion
    	INNER JOIN Articulos_TyC_Definicion AS art_tycdef ON art_tyc.Articulo = art_tycdef.Codigo
    
    WHERE
    -- Periodo
    	alb_cab.Fecha_Albaran >= '20150218' AND alb_cab.Fecha_Albaran <= '20150218' AND 
    -- Familia
    	art_gen.CodSubfamilia = 20 AND
    -- Rango de articulos
    	alb_sltyc.Cod_Articulo >= 151200 AND alb_sltyc.Cod_Articulo <= 151210 AND
    -- Articulo, dimension 1, línea    
    	art_tycdef.Codigo = art_tyc.Articulo AND
    	art_tycdef.NumD = 1 AND 
    	art_tycdef.Idlinea = alb_sltyc.D1 AND
    	alb_sltyc.Uds <> 0
    		   
    SELECT TmpCod_Articulo, TmpDescripcion, TmpFecha_Albaran, TmpUds
    
    FROM #TablaTemporal
    
    ORDER BY TmpCod_Articulo, TmpDescripcion, TmpFecha_Albaran
    GO

    ¿Cómo podría solucionarlo?

    Gracias por vuestra ayuda.

    Saludos.

    sábado, 21 de marzo de 2020 10:33

Todas las respuestas

  • Hola buen dia

    La que compartiste es una tabla temporal con Articulo, Descripcion, Fecha y Uds que no es muy claro a que corresponde

    Eso es lo que te deberia traer Articulo Talla y Cantidad?, o es un store procedure que no compartiste?

    Podrias compartir algunos datos de la tabla?

    ----

    Por otro lado veo que en informacion obtenida indicas que tenes

    Articulo   Talla    Cantidad
    1             1        1
    1             1        1

    No probaste usando un group by por articulo y talla y count para la cantidad?

    Saludos gracias


    domingo, 22 de marzo de 2020 6:08
  • Hola

     

    Gracias por levantar tu consulta en los foros de MSDN. Estamos analizando su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso.

     

    Gracias por usar los foros de MSDN.

     


    Oscar Navarro

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 23 de marzo de 2020 13:51
    Moderador