none
Error: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. RRS feed

  • Pregunta

  • Buenas tardes,

    Me podrian apoyar con el siguiente error de SQL:

    Al realizar la siguiente consulta me aparece el siguiente error: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

    SELECT TA.ccodigoa01, (SELECT   
    CONVERT(DECIMAL(18,2), CASE TMO.cnombrem01
    WHEN 'Peso Mexicano' THEN TM.cneto/TC.cimporte
    WHEN 'Dólar Americano' THEN TM.cneto
    ELSE 0 END) AS Dolares
    FROM MGW10010 TM FULL OUTER JOIN
         MGW10008 TD ON TM.ciddocum01 = TD.ciddocum01 FULL OUTER JOIN
    MGW10005 TP ON TM.cidprodu01 = TP.cidprodu01 FULL OUTER JOIN
    MGW10034 TMO ON TD.cidmoneda = TMO.cidmoneda FULL OUTER JOIN
    MGW10035 TC ON TD.cfecha = TC.cfecha FULL OUTER JOIN
    MGW10001 TA ON TD.cidagente = TA.cidagente FULL OUTER JOIN
             mgw10002 TCL ON TD.cidclien01 = TCL.cidclien01
    WHERE TP.ctipopro01 =1 AND TC.cidmoneda = 2 AND YEAR(TD.cfecha) = 2017 AND MONTH(TD.cfecha) = 2) AS [Ventas Febrero],
    (SELECT   
    CONVERT(DECIMAL(18,2), CASE TMO.cnombrem01
    WHEN 'Peso Mexicano' THEN TM.cneto/TC.cimporte
    WHEN 'Dólar Americano' THEN TM.cneto
    ELSE 0 END) AS Dolares
    FROM MGW10010 TM FULL OUTER JOIN
         MGW10008 TD ON TM.ciddocum01 = TD.ciddocum01 FULL OUTER JOIN
    MGW10005 TP ON TM.cidprodu01 = TP.cidprodu01 FULL OUTER JOIN
    MGW10034 TMO ON TD.cidmoneda = TMO.cidmoneda FULL OUTER JOIN
    MGW10035 TC ON TD.cfecha = TC.cfecha FULL OUTER JOIN
    MGW10001 TA ON TD.cidagente = TA.cidagente FULL OUTER JOIN
             mgw10002 TCL ON TD.cidclien01 = TCL.cidclien01
    WHERE TP.ctipopro01 =1 AND TC.cidmoneda = 2 AND YEAR(TD.cfecha) = 2017 AND MONTH(TD.cfecha) = 3) AS [Ventas Marzo]
         FROM MGW10010 TM FULL OUTER JOIN
         MGW10008 TD ON TM.ciddocum01 = TD.ciddocum01 FULL OUTER JOIN
    MGW10005 TP ON TM.cidprodu01 = TP.cidprodu01 FULL OUTER JOIN
    MGW10034 TMO ON TD.cidmoneda = TMO.cidmoneda FULL OUTER JOIN
    MGW10035 TC ON TD.cfecha = TC.cfecha FULL OUTER JOIN
    MGW10001 TA ON TD.cidagente = TA.cidagente FULL OUTER JOIN
             mgw10002 TCL ON TD.cidclien01 = TCL.cidclien01
    GROUP BY TA.ccodigoa01


    De antemano, gracias.

    Saludos.



    martes, 11 de abril de 2017 21:54

Respuestas

  • Eduardo060888,

    El problema que acusas lo describe el mensaje de error que obtienes: la subconsulta retorna mas de una fila y no está permitido cuando es usada como una expresión.

    SELECT
        TA.ccodigoa01,
        SUM(CASE WHEN MONTH(TD.cfecha) = 2 THEN 	   
                                CASE TMO.cnombrem01
    						  WHEN 'Peso Mexicano' THEN TM.cneto / TC.cimporte
                                    WHEN 'Dólar Americano' THEN TM.cneto
                                    ELSE 0
                                END
        END) AS [Ventas Febrero],
        SUM(CASE WHEN MONTH(TD.cfecha) = 3 THEN 	   
                                CASE TMO.cnombrem01
    						  WHEN 'Peso Mexicano' THEN TM.cneto / TC.cimporte
                                    WHEN 'Dólar Americano' THEN TM.cneto
                                    ELSE 0
                                END
        END) AS [Ventas Marzo]
    FROM 
        MGW10010 TM
        FULL OUTER JOIN MGW10008 TD ON TM.ciddocum01 = TD.ciddocum01
        FULL OUTER JOIN MGW10005 TP ON TM.cidprodu01 = TP.cidprodu01
        FULL OUTER JOIN MGW10034 TMO ON TD.cidmoneda = TMO.cidmoneda
        FULL OUTER JOIN MGW10035 TC ON TD.cfecha = TC.cfecha
        FULL OUTER JOIN MGW10001 TA ON TD.cidagente = TA.cidagente
        FULL OUTER JOIN mgw10002 TCL ON TD.cidclien01 = TCL.cidclien01
    WHERE
        TP.ctipopro01 = 1 AND TC.cidmoneda = 2 
        AND YEAR(TD.cfecha) = 2017 AND MONTH(TD.cfecha) IN (2, 3)
    GROUP BY 
        TA.ccodigoa01;
    GO



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Eduardo060888 martes, 11 de abril de 2017 22:32
    martes, 11 de abril de 2017 22:26

Todas las respuestas

  • Eduardo060888,

    El problema que acusas lo describe el mensaje de error que obtienes: la subconsulta retorna mas de una fila y no está permitido cuando es usada como una expresión.

    SELECT
        TA.ccodigoa01,
        SUM(CASE WHEN MONTH(TD.cfecha) = 2 THEN 	   
                                CASE TMO.cnombrem01
    						  WHEN 'Peso Mexicano' THEN TM.cneto / TC.cimporte
                                    WHEN 'Dólar Americano' THEN TM.cneto
                                    ELSE 0
                                END
        END) AS [Ventas Febrero],
        SUM(CASE WHEN MONTH(TD.cfecha) = 3 THEN 	   
                                CASE TMO.cnombrem01
    						  WHEN 'Peso Mexicano' THEN TM.cneto / TC.cimporte
                                    WHEN 'Dólar Americano' THEN TM.cneto
                                    ELSE 0
                                END
        END) AS [Ventas Marzo]
    FROM 
        MGW10010 TM
        FULL OUTER JOIN MGW10008 TD ON TM.ciddocum01 = TD.ciddocum01
        FULL OUTER JOIN MGW10005 TP ON TM.cidprodu01 = TP.cidprodu01
        FULL OUTER JOIN MGW10034 TMO ON TD.cidmoneda = TMO.cidmoneda
        FULL OUTER JOIN MGW10035 TC ON TD.cfecha = TC.cfecha
        FULL OUTER JOIN MGW10001 TA ON TD.cidagente = TA.cidagente
        FULL OUTER JOIN mgw10002 TCL ON TD.cidclien01 = TCL.cidclien01
    WHERE
        TP.ctipopro01 = 1 AND TC.cidmoneda = 2 
        AND YEAR(TD.cfecha) = 2017 AND MONTH(TD.cfecha) IN (2, 3)
    GROUP BY 
        TA.ccodigoa01;
    GO



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Eduardo060888 martes, 11 de abril de 2017 22:32
    martes, 11 de abril de 2017 22:26
  • Muchisimas gracias!!!

    Agradezco mucho tu valiosa ayuda!

    martes, 11 de abril de 2017 22:33