おそらく、あなたの ChargeOffDate
の一部 は NULL
です 、しかしそれらの FaceValues
これらのレコードは最初の合計には含まれませんが、2 番目の合計には含まれます。
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
これを使用:
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