Согласно вашему объяснению, abc2 также должен возвращать 0, но вы показали 10 в ожидаемом результате. Причина в том, что date_b больше, чем date_a, и для abc2 ничего не следует выбирать для логики date_b между «Start Date of month» и «Date_a». Если я прав, следующий запрос будет работать -
SELECT
A.id,
A.date_a,
COALESCE
(
(
SELECT
SUM(amount)
FROM TABLE_2 B
WHERE B.id = A.id
AND B.date_b BETWEEN DATEADD(DD,-(DAY(date_a)-1),date_a) AND A.date_A
)
,0
)
FROM TABLE_1 A
Тот же вывод может быть достигнут с помощью LEFT JOIN-
SELECT
A.id,
A.date_a,
COALESCE(SUM(B.amount),0) total_amount
FROM table_1 A
LEFT JOIN table_2 B ON B.id = A.id
AND B.date_b BETWEEN DATEADD(DD,-(DAY(A.date_a)-1),date_a) AND A.date_A
GROUP BY A.id,A.date_a