#mysql #sql
#mysql #sql
Вопрос:
Нужна небольшая помощь, я хотел получить данные из определенной таблицы, в которой отображаются записи с уникальным номером счета и датой, когда был выставлен счет. однако он не принимает ПОРЯДОК сортировки, который мне был нужен. Это заставляет меня выполнять предложение GROUP BY, которое отображает одну и ту же дату для всех его результатов. как мне это сделать?
select tmatter as 'Project',
tinvoice as 'Invoice #',
tbilldt as 'Invoice Date',
sum(tworkdol) as 'Transfer',
sum(tbilldol) as 'Billed'
from timecard where tmatter in
(select mmatter from matter where mclient in ('00267051'))
and
tbatch in (select bbatch from batch where bfindt between '03/02/2019' and '04/01/2019')
order by tbilldt
Project Invoice # Invoice Date Transfer Billed
test proj1 6584923 3/25/2019 11,623.75 9,208.75
test proj1 6589826 4/12/2019 4,117.50 3,417.50
test proj2 6584924 3/25/2019 9,923.75 9,923.75
test proj3 6582567 3/15/2019 20,099.75 20,099.75
test proj5 6589345 3/20/2019 600.00 600.00
Комментарии:
1. Какая версия MySQL и можете ли вы предоставить какую-нибудь примерную схему?
2. Вероятно, это ошибка в более старых версиях MySQL, до 5.7.5.
3. И это запрос, созданный какой-то другой программой? Может ли
matter
илиbatch
возвращать несколько результатов?JOIN
s илиEXIST
, вероятно, было бы здесь намного лучше.4. Вы объединяете последние два столбца с
SUM()
, оставляя первые три неагрегированными. В этом случае вам НУЖНО использоватьGROUP BY
со всеми неагрегированными столбцами. Как бы то ни было, ваш запрос не имеет смысла.5. Вы присвоили псевдоним
tbilldt
какInvoice Date
.tbilldt
больше не существует к моменту выполнения вашего запросаORDER BY
.