Hola a todos,
Tengo la siguiente consulta de SQL:
SELECT Horas, PrecioCoste, Facturacion, (Horas * PrecioCoste) AS Cost,
(SELECT SUM(Horas * PrecioCoste) AS Expr1
FROM dbo.Auxiliar AS F1
WHERE ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar])) -
(SELECT SUM(Horas * PrecioCoste) AS Expr1
FROM dbo.Auxiliar AS F2
WHERE ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar]) AND (CodConcepto IN
('FF1', 'FF2', 'FF3', 'FF4', 'FF5') OR ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar]) AND (Descripcion = 'REN')) AS TmpCost,
(SELECT SUM(Facturacion) AS Expr1
FROM dbo.Auxiliar AS F3
WHERE ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar])) -
(SELECT SUM(Facturacion) AS Expr1
FROM dbo.Auxiliar AS F4
WHERE ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar]) AND (CodConcepto IN ('FF1', 'FF2', 'FF3',
'FF4', 'FF5')) OR ([Cod_ cliente a facturar] = dbo.Auxiliar.[Cod_ cliente a facturar]) AND (Descripcion = 'REN')) AS TmpFact,
CASE WHEN [CodConcepto] IN ('FF1', 'FF2', 'FF3', 'FF4S', 'FF5') THEN [Facturacion] ELSE ((Horas * PrecioCoste) *
(SELECT SUM(Facturacion) AS Expr1
FROM dbo.Auxiliar AS F3
WHERE ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar])) -
(SELECT SUM(Facturacion) AS Expr1
FROM dbo.Auxiliar AS F4
WHERE ([Cod_ cliente a facturar] = dbo.Auxiliar .[Cod_ cliente a facturar]) AND (CodConcepto IN ('FF1', 'FF2',
'FF3', 'FF4', 'FF5')) OR ([Cod_ cliente a facturar] = dbo.Auxiliar.[Cod_ cliente a facturar]) AND (Descripcion = 'REN'))) END AS Rendimiento
FROM dbo.Auxiliar
Y el resultado que obtengo es el siguiente:

Todo correcto excepto el campo Rendimiento, que tendría que ser según su fórmula (Cost
* TmpFact):
Cost |
TmpFact |
Rendimiento |
20 |
754 |
15080 |
20 |
754 |
15080 |
37,5 |
754 |
28275 |
36 |
754 |
27144 |
40 |
754 |
30160 |
12,5 |
754 |
9425 |
20 |
754 |
15080 |
Nota: el primer caso del campo calculado
Rendimiento es correcto, es decir, CASE WHEN [CodConcepto] IN ('FF1', 'FF2', 'FF3', 'FF4S', 'FF5') THEN [Facturacion] es correcto el resultado que da para el campo
Rendimiento.
¿Porqué no calcula correctamente el otro caso si el valor del campo Cost
y el valor del campo TmpFact son correctos por separado?
Gracias.