Ваш запрос не включает указанное выражение "regNo" как часть агрегатной функции - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь найти машину в базе данных, которая провела большую часть дней в гараже, но я продолжаю получать эту ошибку. Любые идеи?

SELECT MAX((dateOut - dateIn)) AS [Number of Days], job.regNo, Garage.garageName
FROM Job, Garage
WHERE garage.garageID = job.garageID;

При выполнении я получаю сообщение об ошибке «Ваш запрос не включает указанное выражение« regNo »как часть статистической функции.»

1 Ответ

1 голос
/ 20 февраля 2020

Во-первых, если вам нужен список всех заданий и сколько дней они заняли, вы можете сделать что-то вроде этого:

select
    j.regNo,
    g.garageName,
    datediff(day,j.dateOut,j.dateIn) as [Number of Days]
from Job j
join Garage g on j.garageID = g.garageID

Вы не указываете свою RDBMS, поэтому я предположил SQL Сервер выше и используется datediff для получения количества дней между двумя датами. Если вы используете другую СУБД, вам может потребоваться использовать другую функцию для достижения этой цели, но я не знаю, как можно напрямую вычитать одну дату-время из другой без какого-либо преобразования или функции для этого.

Я также заменил ваше предложение для нескольких таблиц from на объединение и включил псевдонимы для таблиц, так как обычно это предпочтительный подход для запроса нескольких таблиц.

Чтобы ответить на исходный вопрос, вы можете использовать запрос выше с order by и top 1, чтобы получить то, что вы ищете:

select top 1
    j.regNo,
    g.garageName,
    datediff(day,j.dateOut,j.dateIn) as [Number of Days]
from Job j
join Garage g on j.garageID = g.garageID
order by datediff(day,j.dateOut,j.dateIn) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...