Crear vista para obtener la suma de varias consultas
Publicado por Jesús (1 intervención) el 07/01/2019 23:41:59
Buenas tardes soy nuevo aprendiendo sql server y por lo tanto tengo muchas dudas, una que se me presenta es que en access podia hacer calculos con dos tablas que no tuvieran relacion, es decir verificaba si variascolumnas de la primera tabla cumpliera con unas condiciones especificas y de ser cierto me diera el monto de la segunda tabla para cada caso y de no ser asi diera cero, por ejemplo verificaba si un empleado que tiene hasta 4 hijos con edad entre 0 y 18 años, en los casos de que tuviera me diera un bono y en los que no tenga me de cero para luego sumar los 4 montos y obtener un bono total, aca esta el codigo en sql de access:
SELECT DATO1.CI, IIf([HIJO1]<>"",IIf(Int((Date()-[FNAC1])/365.25)<=18,[MONTOB],0),0) AS P1, IIf([HIJO2]<>"",IIf(Int((Date()-[FNAC2])/365.25)<=18,[MONTOB],0),0) AS P2, IIf([HIJO3]<>"",IIf(Int((Date()-[FNAC3])/365.25)<=18,[MONTOB],0),0) AS P3, IIf([HIJO4]<>"",IIf(Int((Date()-[FNAC4])/365.25)<=18,[MONTOB],0),0) AS P4, NZ([P1],0)+NZ([P2],0)+NZ([P3],0)+NZ([P4],0) AS SPH
FROM DATO1, PHIJO;
Ahora el inconveniente es que no se como hacer en sql server esto, si puedo calcular una de las condiciones pero las demas no se como hacerlo, aca esta el codigo como lo hice:
SELECT dbo.DATO1.CI, dbo.DATO1.HIJO1, dbo.PHIJO.MONTOB
FROM dbo.DATO1 CROSS JOIN
dbo.PHIJO
WHERE (dbo.DATO1.HIJO1 IS NOT NULL AND FLOOR((CAST(CONVERT(varchar(8), GETDATE(), 112) AS int) - CAST(CONVERT(varchar(8), dbo.DATO1.FNAC1, 112) AS int)) / 10000)
<= 18)
Si alguien me puede orientar de como poder realizar esto se lo agradeceria ya que llevo tiempo buscando una solución y no logro verlo, gracias de antemano.
SELECT DATO1.CI, IIf([HIJO1]<>"",IIf(Int((Date()-[FNAC1])/365.25)<=18,[MONTOB],0),0) AS P1, IIf([HIJO2]<>"",IIf(Int((Date()-[FNAC2])/365.25)<=18,[MONTOB],0),0) AS P2, IIf([HIJO3]<>"",IIf(Int((Date()-[FNAC3])/365.25)<=18,[MONTOB],0),0) AS P3, IIf([HIJO4]<>"",IIf(Int((Date()-[FNAC4])/365.25)<=18,[MONTOB],0),0) AS P4, NZ([P1],0)+NZ([P2],0)+NZ([P3],0)+NZ([P4],0) AS SPH
FROM DATO1, PHIJO;
Ahora el inconveniente es que no se como hacer en sql server esto, si puedo calcular una de las condiciones pero las demas no se como hacerlo, aca esta el codigo como lo hice:
SELECT dbo.DATO1.CI, dbo.DATO1.HIJO1, dbo.PHIJO.MONTOB
FROM dbo.DATO1 CROSS JOIN
dbo.PHIJO
WHERE (dbo.DATO1.HIJO1 IS NOT NULL AND FLOOR((CAST(CONVERT(varchar(8), GETDATE(), 112) AS int) - CAST(CONVERT(varchar(8), dbo.DATO1.FNAC1, 112) AS int)) / 10000)
<= 18)
Si alguien me puede orientar de como poder realizar esto se lo agradeceria ya que llevo tiempo buscando una solución y no logro verlo, gracias de antemano.
Valora esta pregunta


0