Идея довольно проста:
Я попытался написать пример (не тестировался). Вы не указываете, какая БД, поэтому я предполагаю, что cte (общее табличное выражение) доступно. Если не просто поставить cte в подзапрос. Точно так же я не уверен, что dateadd
и interval
работают одинаково во всех диалектах.
with addlastdayofmonth as (
select
id
-- adding a 'virtualcolumn', 1 if last day of month 0 otherwise
, if(month(dateadd(due_date, interval '1' day)) != month(due_date), 1 ,0) as onlastday
from
table
)
select
id
, count(*) - sum(onlastday) as alwayslastday
from
addlastdayofmonth
group by
id
having
-- if count(rows) == count(rows with last day) we have a winner
halwayslastday = 0
В этой строке:
-where('Commande_nadine.DATE_DOCUMENT_CMD_ACHAT_FRS',">",$Debut)
Вам не хватает >
до where
:
->where('Commande_nadine.DATE_DOCUMENT_CMD_ACHAT_FRS',">",$Debut)