Я пишу SQL-запрос в Mysql, где результат должен быть сгруппирован как с идентификатором, так и с датой. Дата определяется динамически и может быть либо простым полем datetime, либо комбинацией года и месяца или недели года. См. Запрос ниже для недели года;Использование DATE_FORMAT для группировки в mysql
SELECT t.transactionId, t.transactionDate, t.transactionProcessDate,
t.status, t.type, t.versionId, t.note, WEEKOFYEAR(t.transactionDate) as CW,
YEAR(t.transactionDate) as yr, (DATE_FORMAT(t.transactionDate, '%Y-%u')) as tDate
FROM transaction t
WHERE (t.status = 'A' or t.status = 'N')
GROUP BY t.transactionId , tDate
У меня есть проблема пытается группы по TDate,
GROUP BY t.transactionId , tDate
который возвращает дубликаты с одинаковыми датами.
Когда я изменить запрос к группе по полям CW и уг,
GROUP BY t.transactionId , CW, yr
я получаю ожидаемый результат, без дублей.
Вопрос: Есть ли проблема с группировкой полей, порожденное DATE_FORMAT
, которые могут привести к возвращенного запроса не в состоянии recorgnize дубликаты?
Я хотел бы полностью исключить два поля CW и yr из запроса, поскольку они используются только для группировки.
Вы пытались «GROUP BY t.transactionId, t.transactionDate' вместо этого? –
Какую версию MySQL вы используете? –
@ Þaw Это не сработает, потому что даты транзакций могут быть разными. – Awemo