Hoogstwaarschijnlijk zijn sommige van uw ChargeOffDate
's zijn NULL
, maar hun FaceValues
zijn niet.
Deze records dragen niet bij aan de eerste som, maar dragen wel bij aan de tweede.
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
Gebruik dit:
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