none
Unir consultas sql RRS feed

  • Pregunta

  • Buenas noches. Estoy haciendo un sistema de gestión para una empresa y tengo la siguiente duda.

    Tengo una tabla donde guardo los recibos. En cada recibo se puede pagar de 8 formas distintas y cada forma de pago tiene su columna "Importe" que donde se registra cuanto abonó la persona con esa forma de pago (si no se usó, queda vacío).

    Lo que necesito es que, si una persona pagó, por ejemplo, de tres formas distintas (por decir, Efectivo, cheque y transferencia) mostrar los registros por separado. O sea, un registro que muestre la parte que se pagó en efectivo, otro que muestre el pago con cheque y otro que muestre el pago con transferencia.

    Estas son las columnas de la tabla Cab_Registro:

    idCab_Recibo
    idCliente
    fecha
    observacion
    idConcepto1
    observacion1
    importe1
    idConcepto2
    observacion2
    importe2
    idConcepto3
    observacion3
    importe3
    idConcepto4
    observacion4
    importe4
    idConcepto5
    observacion5
    importe5
    idConcepto6
    observacion6
    importe6
    idConcepto7
    observacion7
    importe7
    idConcepto8
    observacion8
    importe8

    y las columnas que necesito mostrar de la consulta son:

    idCab_Registro
    IdCliente
    Nombre
    Fecha
    Importe
    Concepto
    Observacion

    Lo que necesito es si hay datos en la columna importe2 e Importe7 me muestre esos en una misma columna llamada Importe pero muestre en otra columna de que forma de pagó cada importe.

    Algo así: 

    32 ---- 96 ---- ANDREA FRANCESCHINI ---- 2018-11-17 ---- 0,21 ---- Efectivo
    32 ---- 96 ---- ANDREA FRANCESCHINI ---- 2018-11-17 ---- 635  ---- Cheque


    Yo usé esta consulta SQL pero la pude hacer para que me muestre solamente los datos que hay en Importe1 e Importe2. Necesito que me muestre todos los campos donde hay un importe (obviamente que el id de recibo, del cliente y la fecha coincidan como en el ejemplo de arriba)

    SELECT [idCab_Recibo] ,CR.[idCliente] ,(SELECT C.[nombre] FROM [Clientes] C WHERE C.idCliente = CR.idCliente) AS nombre  ,[fecha] ,CR.[importe1] as Importe ,(SELECT LC.[nombre] FROM [ListaConceptos] LC WHERE LC.idConcepto = CR.idConcepto1) AS Concepto  ,CR.[observacion]
    		FROM [BDEmpresa].[dbo].[Cab_Registro] CR
    	    LEFT JOIN Clientes C
    		ON c.idCliente = CR.idCliente
    		inner join ListaConceptos LC
    		ON LC.idConcepto = CR.idConcepto1
    		WHERE c.condFacturacion = 1 and importe1 <> '' -- 1 = true
    		
    		UNION
    
    		SELECT [idCab_Recibo] ,CR.[idCliente] ,(SELECT C.[nombre] FROM [Clientes] C WHERE C.idCliente = CR.idCliente) AS nombre  ,[fecha] ,CR.[importe2] as Importe ,(SELECT LC.[nombre] FROM [ListaConceptos] LC WHERE LC.idConcepto = CR.idConcepto1) AS Concepto  ,CR.[observacion]
    		FROM [BDEmpresa].[dbo].[Cab_Registro] CR
    	    LEFT JOIN Clientes C
    		ON c.idCliente = CR.idCliente
    		inner join ListaConceptos LC
    		ON LC.idConcepto = CR.idConcepto1
    		WHERE c.condFacturacion = 1 and importe2 <> '' -- 1 = true
    		ORDER BY fecha DESC

    Saludos y espero que se entienda :P

    Gracias!

    miércoles, 25 de septiembre de 2019 0:24

Respuestas

Todas las respuestas