Присоединяйтесь вместе с Где можно медленно.следующее может быть быстрее (но не то же самое ... смотрите комментарии и переосмыслите, если вам нужно внутреннее или внешнее соединение ...)
SELECT Count(DISTINCT DT.id)
FROM pcwdeptrans DT
INNER JOIN pcwitemtotal IT
ON DT.id = IT.deposittransid
AND ( DT.statecode IN ( :1, :2, :3, :4, :5, :6, :7, :8 )
OR ( DT.statecode IN ( :9 ) AND IT.statecode = :10 ) )
LEFT OUTER JOIN pcwdepreceipt DR
ON DR.deposittransid = DT.id
AND DR.requesttime >= :11
AND DR.requesttime <= :12
AND DR.userid = :13
edit: обсуждение того, должно ли это быть внутренним или внешним соединением, былоуже началось в комментариях вопроса раньше.Преобразование внешнего соединения вопроса во внутреннее соединение с помощью предложения where может быть или не быть намерением.
SELECT Count(DISTINCT DT.id)
FROM pcwdeptrans DT
INNER JOIN pcwitemtotal IT
ON DT.id = IT.deposittransid
AND ( DT.statecode IN ( :1, :2, :3, :4, :5, :6, :7, :8 )
OR ( DT.statecode IN ( :9 ) AND IT.statecode = :10 ) )
INNER JOIN pcwdepreceipt DR
ON DR.deposittransid = DT.id
AND DR.requesttime >= :11
AND DR.requesttime <= :12
AND DR.userid = :13