【发布时间】:2021-11-13 19:36:42
【问题描述】:
我有以下查询,但它产生相同的结果,结果应该不同
select
COALESCE(Clinic,'total') as Clinic,
sum(Revenue/ND) as Revenue_ND,
sum(Revenue/Home_Care) as Revenue_Home_Care
from
(
select
businesses.label as Clinic,
COUNT(CASE
WHEN appointment_types.name like '%initial%' and appointment_types.category IN (
'National- Ex Phys- ND',
'National- Physio -ND',
'National- OT -ND',
'National- Speech Pathology- ND',
'SA/WA - Physiotherapy - ND',
'SA/WA - Telehealth Physiotherapy - ND'
) then 1 ELSE 0 END)
as ND,
COUNT(CASE
WHEN appointment_types.name like '%initial%' and appointment_types.category IN (
'National- Zest',
'National- OT -HCP',
'National- Physio -HCP',
'National- Physio -Remedy',
'National-Physio-TUH',
'National- Speech Pathology- HCP'
) then 1 ELSE 0 END)
as Home_Care,
sum(CASE
WHEN appointment_types.category is not null
then invoices.net_amount ELSE 0 END)
as Revenue
FROM
individual_appointments
INNER join appointment_types on
appointment_types.id = individual_appointments.appointment_type_id
inner join invoices on
invoices.appointment_id = individual_appointments.id
inner join businesses on
businesses.id = individual_appointments.business_id
WHERE
{{clinic}}
and {{date}}
group by
businesses.label
)x
group by
ROLLUP(Clinic);
结果:
Clinic Revenue_ND Revenue_Home_Care
Marli 51.33 51.33
Alexandria 94.21 94.21
total 230.48 230.48
它应该导致不同的列值。 你能告诉我错误在哪里以及正确的查询解决方案吗?
【问题讨论】:
标签: sql sql-server count sum case