none
Como puedo hacer esta consulta sabiendo que son varias referencias sin que me envie este error RRS feed

  • Pregunta

  • SELECT [referencia1],[referencia2],[referencia3],[presupuesto],
    [codcapi],[capitulo],[codunit],[unitario],[undunita],[cantxppto],[codinsu],[insutipo],[insumo],[unidinsu],[ctrlinven],[validación],[precioppto],[consumounitario],[consumototal],[adic],[precioaut],[preciocompra],[precioentrado],[ped],[aprob],[comp],[ent],[sali],[traslado],[xcomp],[xent],[saldoxunit],[saldoxppto],[vlrent],[vlrenttraslado],[vlrcompradoxent],[vlrxcomp],[vlrtraslado],[vlrproy],[vlrproyejec],[vlrini],[vlrejec],[IdFecha],(SELECT CLASIFICACION FROM PARAMETRIZACIONINCLUIDA WHERE CodigoObraInmueble=SUBSTRING(referencia2,0,7)) FROM [ArchivoCostos].[dbo].[CostosPptoProg] WHERE IdFecha=173 
    and SUBSTRING(referencia1,0,7) 
    IN(SELECT CodigoObraInmueble FROM ParametrizacionIncluida WHERE Estado=1) AND referencia1 NOT LIKE (SELECT referencia from Referencias) 

    Msg 512, Level 16, State 1, Line 1
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.



    Jorge Vidal

    viernes, 31 de octubre de 2014 20:51

Respuestas

  • Con subconsultas, pero creo que tu diseño de BD está mal porque veo que debes utilizar un SUBSTRING en uno de tus filtros cuando eso no es recomendable, aun así, con lo que tienes creo que pudieras obtener el resultado esperado de la siguiente manera:

    FROM archivoCostos.dbo.costosPptoProg cp
    INNER JOIN (
    	SELECT p.CodigoObraInmueble
    	FROM ParametrizacionIncluida p
    	LEFT JOIN referencia r ON p.referencia1 = r.referencia
    	WHERE p.estado = 1 AND r.referencia IS NULL
    ) AS sc
    ON SUBSTRING( cp.referencia1,0,7 ) = sc.CodigoObraInmueble

    Te recomiendo ampliamente que ejecutas la subconsulta primero y verifiques que obtienes los resultados que deseas y después integres el query.

    SALUDOS!


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    viernes, 31 de octubre de 2014 22:44