正しい結果を返すSQLがあります。
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
BOOKED_DATE
ここで、WHERE
句に新しいフィールドを追加して、その間隔で作成されたいくつかのプロジェクト タスクのみでプロジェクトの数を制限したいと考えています。したがって、テーブルで INNER JOIN を実行するinner join 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
テーブル PROJECT_TASK の行のために、正しくない巨大な結果が得られます。それを制限する方法は?入れてみ... count(distinct case when ...
ましたが、結果は常に1です。
だから私はどういうわけかこの値を制限する必要がありますが、その代わりに私は