Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что-то не так, не могу понять что  [new]
bestden
Member

Откуда:
Сообщений: 15
Select devices.serial,devices.started,devices.scheduled,max(reports.date) From devices INNER JOIN reports ON devices.serial = reports.serial WHERE devices.finished is Null Order by devices.started Desc

не работает запрос, без max(reports.date) всё работает, но мне нужно максимальное значение времени

VS выдает следующую ошибку: Столбец "devices.serial" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
12 авг 14, 13:42    [16430917]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
_human
Member

Откуда:
Сообщений: 569
bestden,

изучите тег SRC. не пишите запрос в строку.
ответ в ошибке VS - "предложении GROUP BY"
12 авг 14, 13:44    [16430929]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
bestden
Member

Откуда:
Сообщений: 15
_human, я в sql не особо шарю, можете уточнить?
12 авг 14, 13:46    [16430942]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
BarKerGR
Member

Откуда:
Сообщений: 8
Select devices.serial,devices.started,devices.scheduled,max(reports.date) 
From devices INNER JOIN reports ON devices.serial = reports.serial 
WHERE devices.finished is Null Order by devices.started Desc
Group by devices.serial, devices.started, devices.scheduled
12 авг 14, 13:49    [16430970]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
_djХомяГ
Guest
Изучите Group BY
Группируйте по одним колонкам а выводите без аггрегата другие
Ну или используйте OVER PARTITION
12 авг 14, 13:50    [16430976]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
_human
Member

Откуда:
Сообщений: 569
bestden,

если вы используете агрегатные ф-ии(max, min и т.п.), то вы должны использовать group by для полей по которым будете группировать.
12 авг 14, 13:51    [16430983]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
bestden
Member

Откуда:
Сообщений: 15
BarKerGR
Select devices.serial,devices.started,devices.scheduled,max(reports.date) 
From devices INNER JOIN reports ON devices.serial = reports.serial 
WHERE devices.finished is Null Order by devices.started Desc
Group by devices.serial, devices.started, devices.scheduled

спасибо сработало, но немного иначе:
Select devices.serial,devices.started,devices.scheduled,max(reports.date) 
From devices INNER JOIN reports ON devices.serial = reports.serial 
Group by devices.serial, devices.started, devices.scheduled
WHERE devices.finished is Null Order by devices.started Desc

в первом случае VS пишет: неправильный синтаксис
12 авг 14, 13:54    [16431007]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
BarKerGR
Member

Откуда:
Сообщений: 8
Ну там последовательность операций должна быть по феншую. Не пишите так запросы, тяжело прочитать
12 авг 14, 13:58    [16431037]     Ответить | Цитировать Сообщить модератору
 Re: Что-то не так, не могу понять что  [new]
bestden
Member

Откуда:
Сообщений: 15
всем спасибо, буду изучать
12 авг 14, 13:58    [16431039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить