CHill60
Есть несколько проблем с вашим запросом, некоторые из этих проблем также существуют с запросом в решении 3.
1. Избегайте использования зарезервированных слов для имен столбцов. Если вы используете зарезервированное слово, то вы должны окружить имя столбца квадратными скобками, так что столбец date
следует упоминать как [date]
2. точно так же имена столбцов не должны иметь пробелов, они также должны быть заключены в квадратные скобки, т. е. invoice no
должно быть [invoice no]
3. порядок предложений в вашем запросе неверен - WHERE
пункт поставляется до то GROUP BY
нет, не после.
4. Если вы собираетесь использовать подзапросы, то каждому из возвращаемых элементов должно быть присвоено псевдонимное имя, чтобы быть включенным во внешний запрос, например (но см.)
select sum(amount) AS Amt from employees group by invoice no
5. также по теме подзапросов, если вы собираетесь их использовать, то вам нужно получить
все из элементов, на которые вы позже попытаетесь сослаться, т. е.
id
,
empname
, прием
6.для этого вам не нужен подзапрос.
7.при использовании дат лучше использовать менее двусмысленный формат гггг-ММ-ДД. Мы не можем сказать, является ли ваша дата ММ-ДД-гггг или ДД-ММ-гггг, и это может вызвать проблемы при попытке отображения или работы с датами в приложении. Дата должна быть представлена следующим образом
'1992-01-01'
Принимая во внимание все вышесказанное, но с оговоркой, что вы не показали нам свою структуру таблицы, какие-либо примеры данных или ожидаемые результаты, тогда этот запрос должен работать
select id,[date], empname,[invoice no],sum(amount) as Amount from employees
where [date]>= '1992-01-01'
group by id,[date],empname,[invoice no]