您快到了,我认为缺少的一点是您需要在取消透视之前在正确的级别聚合数据。
因此,如果您首先将数据与
select
date_trunc('month', end_time) as month,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_passed]))[2] as total_test_cases_passed,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_failed]))[2] as total_test_cases_failed,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_pending]))[2] as total_test_cases_pending,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_skipped]))[2] as total_test_cases_skipped
from batch_details
Where end_time >= date_trunc('month', now()) - interval '3 month' and end_time < date_trunc('month', now())
group by date_trunc('month', end_time)
那么您就可以正确地取消透视。整个查询是
with overall_sum_per_month as(
select
date_trunc('month', end_time) as month,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_passed]))[2] as total_test_cases_passed,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_failed]))[2] as total_test_cases_failed,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_pending]))[2] as total_test_cases_pending,
(MAX(ARRAY[extract(epoch from end_time), total_test_cases_skipped]))[2] as total_test_cases_skipped
from batch_details
Where modality = 'CT' and end_time >= date_trunc('month', now()) - interval '3 month' and end_time < date_trunc('month', now())
group by date_trunc('month', end_time)
)
select month,
unnest(array['passed', 'failed', 'pending', 'skipped']),
unnest(array[total_test_cases_passed, total_test_cases_failed, total_test_cases_pending, total_test_cases_skipped]) AS "Count"
FROM overall_sum_per_month;
编辑:如果您需要当月的最后一个数字而不是sum 并过滤modality=CT,我根据以下讨论更改了上述查询