Я пытаюсь агрегировать сумму записей в зависимости от значения, соответствующего CASE WHEN
. Я могу агрегировать сумму, но я не знаю, как сгруппировать записи в зависимости от значения description
.
SQL Запрос:
SELECT
T1.Company, T1.DueDate,
SUM(T1.Amount) AS TotalAmount,
DATEDIFF( day, CONVERT(DATETIME, CAST(T1.DueDate AS VARCHAR(8)), 112), DATEADD( day, - 1, CONVERT(DATETIME, CAST(T3.FromDate AS VARCHAR(8)), 112) ) ) AS Age,
CASE
WHEN
DATEDIFF( day, CONVERT(DATETIME, CAST(T1.DueDate AS VARCHAR(8)), 112), DATEADD( day, - 1, CONVERT(DATETIME, CAST(T3.FromDate AS VARCHAR(8)), 112) ) ) <= 0
THEN
'Current'
WHEN
DATEDIFF( day, CONVERT(DATETIME, CAST(T1.DueDate AS VARCHAR(8)), 112), DATEADD( day, - 1, CONVERT(DATETIME, CAST(T3.FromDate AS VARCHAR(8)), 112) ) ) > 0
AND DATEDIFF( day, CONVERT(DATETIME, CAST(T1.DueDate AS VARCHAR(8)), 112), DATEADD( day, - 1, CONVERT(DATETIME, CAST(T3.FromDate AS VARCHAR(8)), 112) ) ) <= 30
THEN
'Late'
END AS Description
FROM
Table1 T1
LEFT JOIN
Table2 T2
ON T1.Company = T2.Company
AND T1.YR = T2.YR
INNER JOIN
Table3 T3
ON T1.Company = T3.Company
AND T3.YR = YEAR(CURRENT_DATE)
GROUP BY T1.Company,T1.DueDate, T3.FromDate
Мой запрос возвращает следующее.
Company | DueDate | TotalAmount | Age | Description
------------+----------------+-------------+------+------------
123 | 20200423 | 150 | 7 | Late
123 | 20200604 | 18000 | -35 | Current
123 | 20200515 | 500 | -15 | Current
Однако то, что я действительно хочу выполнить sh, - это агрегировать записи если они имеют одинаковое значение Description
. Итак, правильный результат должен быть:
Company | TotalAmount |Description |
------------+--------------+------------+
123 | 150 | Late
123 | 18500 | Current
2-я и 3-я строки находятся под «Текущим». Следовательно, следует объединить 2 строки и добавить 18000 + 500 = 18500. Столбцы DueDate и Age предназначены только для справки. Наиболее важные поля: TotalAmount
и Description
Я пробовал группировать по псевдониму Description
, который используется в CASE-WHEN
, но у меня не получилось.
Я бы ценю любую помощь.
Спасибо!