Я рассчитываю подвести итог на основе случая, который варьируется в течение недели от запроса ниже, чтобы накопить до 90 дней.В настоящее время я могу сделать это, ограничивая даты и объединяя их вместе;однако, есть ли другой способ?
Данный запрос занимает всего 2 недели, и мне пришлось бы продолжать объединять дополнительные подвыборы, чтобы выполнить 90 дней.
select comp_id, sum(total) from (
(
SELECT CASE
WHEN AVG(amount) < 10 THEN 0
WHEN COUNT(p_id) < SUM(amount)*.5
THEN SUM(amount)*.5
ELSE COUNT(p_id)
END as total, avg(amount), comp_id
FROM p_container INNER JOIN chg ON chg_p_id = p_id
INNER JOIN c_type ON c_type_id = chtype_id
where correction_name like '%correction word%'
AND p_date BETWEEN GETDATE () - 9 AND GETDATE () - 2
group by comp_id
) UNION ALL (
SELECT CASE
WHEN AVG(amount) < 5 THEN 0
WHEN COUNT(p_id) < SUM(amount)*.06
THEN SUM(amount)*.06
ELSE COUNT(p_id)
END as total, avg(amount), comp_id
FROM p_container INNER JOIN chg ON chg_p_id = p_id
INNER JOIN c_type ON c_type_id = chtype_id
where correction_name like '%correction word%'
AND p_date BETWEEN GETDATE () - 17 AND GETDATE () - 10
group by comp_id
)) group by comp_id