none
Error en resultado de consulta con mas de un valor RRS feed

  • Pregunta

  • Hola buenas tardes, tengo un problema ojala me puedan ayudar, tengo esta consulta:

    Select TOP 1' SOLICITUD NUEVAS CLAVES PARA: '+ Txt_Tipo_Nomina +' DE '+ Txt_FFinanciamiento_Nomina +' DE LA '+ TXT_QUINCENA +' DE LA F.F. '+    
    '('+S.Cve_Tipo_Subsidio+F.Cve_FFinanciamiento +') '+ (SELECT DISTINCT cf.txt_siglas FROM RFTempCat_Presupuesto_Nuevas_Claves_Nomina (NOLOCK)  
    INNER JOIN dbo.RFCat_FFinanciamiento CF(NOLOCK)ON dbo.RFTempCat_Presupuesto_Nuevas_Claves_Nomina.Id_FFinanciamiento = CF.Id_FFinanciamiento) +' DEL EJERCICIO FISCAL'+ convert(varchar,H.Efiscal)         
    from rhctrl_nomina H(Nolock)        
    Inner Join RHCtrl_Nomina_Detalle D(Nolock) on D.Id_Nomina = H.Id_Nomina    
    Inner Join RHCat_Tipo_Nomina T(Nolock) on T.Id_Tipo_Nomina = H.Id_Tipo_Nomina        
    Inner Join RHCat_Quincena q(Nolock) on q.Id_Quincena = H.Id_Quincena        
    Inner Join (RFCat_FFinanciamiento F(Nolock)    
    Inner Join RFCat_Tipo_Subsidio S(Nolock) on S.Id_Tipo_Subsidio = F.Id_Tipo_Subsidio )     
    on S.Cve_Tipo_Subsidio+F.Cve_FFinanciamiento = LTRIM(RTRIM(D.Txt_FF)) And F.Txt_Siglas = LTRIM(RTRIM(D.Txt_Siglas))    
    Inner Join RHCat_FFinanciamiento FH(Nolock) on FH.Id_FFinanciamiento_Nomina = H.Id_FFinanciamiento_Nomina    
    where H.Id_Nomina = 15032     
         

    el problema se genera en la parte de :

    SELECT DISTINCT cf.txt_siglas FROM RFTempCat_Presupuesto_Nuevas_Claves_Nomina (NOLOCK)  
    INNER JOIN dbo.RFCat_FFinanciamiento CF(NOLOCK)ON dbo.RFTempCat_Presupuesto_Nuevas_Claves_Nomina.Id_FFinanciamiento = CF.Id_FFinanciamiento

    ya que esta consulta me devuelve mas de un valor que es tipo varchar al ejecutar toda la consulta me muestra que regresa mas de un valor cuando va despues de <> , <=,=>,=

    Espero que me puedan ayudar para saber como hacer que no me mande este resultado erroneo, todo esto lo meto en un sp.

    los resultados de esa consulta que me regresa mas de un valor son como :

    "FASSA 201"

    "ASE 101"

    y ahi me marca el error, quisiera saber como hacer para que me tome esos dos valores y no me marque error, gracias.

    miércoles, 7 de junio de 2017 20:53

Respuestas

  • El error es claro, la subconsulta retorna un conjunto y la lista de selección espera por un valor escalar, pienso que podrías concatenar todos los valores resultantes en uno, por ejemplo:

    SELECT TOP 1 
        ' SOLICITUD NUEVAS CLAVES PARA: ...' +
        (
    	   SELECT STUFF((
    		  SELECT ',' + CF.txt_siglas
    		  FROM 
    			 RFTempCat_Presupuesto_Nuevas_Claves_Nomina N (NOLOCK)
    			 INNER JOIN dbo.RFCat_FFinanciamiento CF(NOLOCK) 
    				ON N.Id_FFinanciamiento = CF.Id_FFinanciamiento 
    		  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(4000)'), 1, 1, '')
        ) + ' DEL EJERCICIO FISCAL' + CONVERT(VARCHAR(100), H.Efiscal)
    FROM 
        /*...*/



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 7 de junio de 2017 21:04