Все привет прошу помощи:
Есть две таблицы sys_accounts(клиенты) и sys_activities(задачи по клиентам).
Есть такой работающий запрос (По сути его задача возвращать клиентов у которых с момента закрытия последней задачи прошло более 60ти дней):
SELECT DISTINCT ON (activ.account_guid) (SELECT name FROM sys_accounts WHERE guid=activ.account_guid),
(SELECT extract(day from now() - activ.datefinish) FROM sys_accounts WHERE guid=activ.account_guid), activ.datefinish FROM sys_activities activ
INNER JOIN sys_accounts account ON account.guid = activ.account_guid
WHERE activ.datefinish IS NOT NULL AND activ.dc_status_guid='df11a68c-20d3-46e2-840f-2e4548aacf1b'
AND extract(day from now() - activ.datefinish)>=60
AND (account.dc_stage_guid!='83e0d2dd-926e-4764-9d04-8996ce2d1178' AND account.dc_stage_guid!='fc8e8746-cc71-4d52-b6a4-9186e3da653b')
ORDER BY activ.account_guid,activ.datefinish DESC
Он нормально работает и возвращает - то что нужно, т.е список клиентов у которых с момента закрытия последней задачи прошло более 60ти дней
Однако если написать такую конструкцию:
SELECT name from sys_accounts account where
exists(
SELECT DISTINCT ON (activ.account_guid) activ.account_guid, activ.datefinish FROM sys_activities activ
INNER JOIN sys_accounts account ON account.guid = activ.account_guid
WHERE activ.datefinish IS NOT NULL AND activ.dc_status_guid='df11a68c-20d3-46e2-840f-2e4548aacf1b'
AND extract(day from now() - activ.datefinish)>=60
AND (account.dc_stage_guid!='83e0d2dd-926e-4764-9d04-8996ce2d1178' AND account.dc_stage_guid!='fc8e8746-cc71-4d52-b6a4-9186e3da653b')
ORDER BY activ.account_guid,activ.datefinish DESC
)
То запрос начинает возвращать небольшое кол-во компаний у которых с момента закрытия последней задачи прошло менее 60ти дней. Я если честно не понимаю почему так происходит