Höchstwahrscheinlich einige Ihrer ChargeOffDate
sind NULL
, sondern ihre FaceValues
nicht.
Diese Aufzeichnungen tragen nicht zur ersten Summe bei, wohl aber zur zweiten.
WITH q (ChargeOffDate, FaceValue) AS
(
SELECT CAST('20030101' AS DATETIME), 1.0
UNION ALL
SELECT CAST('20030201' AS DATETIME), 2.0
UNION ALL
SELECT CAST('20030301' AS DATETIME), 3.0
UNION ALL
SELECT NULL, 4.0
)
SELECT CONVERT(DATETIME, SUM(CONVERT(FLOAT, ChargeOffDate) * FaceValue) / SUM(FaceValue))
FROM q
----
1961-11-12 21:36:00.000
Verwenden Sie dies:
WITH q (ChargeOffDate, FaceValue) AS
(
SELECT CAST('20030101' AS DATETIME), 1.0
UNION ALL
SELECT CAST('20030201' AS DATETIME), 2.0
UNION ALL
SELECT CAST('20030301' AS DATETIME), 3.0
UNION ALL
SELECT NULL, 4.0
)
SELECT CONVERT(DATETIME, SUM(CONVERT(FLOAT, ChargeOffDate) * FaceValue) / SUM(FaceValue))
FROM q
WHERE ChargeOffDate IS NOT NULL
----
2003-02-09 20:00:00.000