我有SQL,它会返回正确的结果。SQL - 结合DISTINCT和INNER JOIN和COUNT(CASE WHEN)
select accounts.name, count(case when (((estimated_start_date<='2013-01-01'
and project.status='closed')
or (estimated_start_date<='2013-01-01' and project.status='open'
and estimated_end_date>='2013-04-01')))
then 1 else null end) as Number
from project
inner join project_cstm on project.id=project_cstm.id_c
inner join accounts on project_cstm.account_id_c=accounts.id
group by accounts.name
我回到了我很好的结果:
在例如:
Telenor 5
Telecom 3
现在我想在WHERE
子句添加新的领域BOOKED_DATE
限制的项目数量只有一些项目中创建任务在那段时间内。所以我做内部加入表inner join project_task
和结果应该更小,但相反,我得到的结果这些巨大的数字。不知道如何将它结合起来。
感谢,因为在表PROJECT_TASK行求助
Telenor 150
Telecom 980
select accounts.name, count(case when (((estimated_start_date<='2013-01-01'
and project.status='closed')
or (estimated_start_date<='2013-01-01' and project.status='open'
and estimated_end_date>='2013-04-01')))
then 1 else null end) as Number
from project
inner join project_cstm on project.id=project_cstm.id_c
inner join accounts on project_cstm.account_id_c=accounts.id
inner join project_task on project_task.project_id=project.id
where booked_date>'2013-01-01' and booked_date<'2015-01-01'
group by accounts.name
我得到它远离正确的巨大成果。如何限制?我试图把... count(distinct case when ...
但比结果始终是1
所以我必须以某种方式限制此值,但不是说我
谢谢。我非常亲密,但没有你我就无法做到。祝一切顺利 –