Что не так с этим простым запросом SQL Server 2008 R2?Выдает ошибку «выражение не булевого типа ...» - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь выбрать одну строку из таблицы Ответы, которая удовлетворяет нескольким условиям и имеет самую последнюю дату в поле update_datetime.(Я на самом деле хочу ВСЕ поля из строки Ответы, но я остановлюсь только на ее response_uuid.)

Моя попытка выполнить этот запрос ниже приводит к ошибке "Выражение не-логического типа, указанное вконтекст, где ожидается условие, рядом с ')' ".Что, черт возьми, я делаю не так?

select response_uuid, MAX(update_datetime) 
from Responses 
where question_id=2115
and session_uuid in (
  select session_uuid from Sessions
  where client_uuid = '552782A2-4DC6-4715-B278-4C7F5F867975'
)
group by response_uuid
having MAX(update_datetime)

Я смотрел на подобные вопросы по всем сетям, и я просто не вижу, в чем проблема.Спасибо за любую помощь!

ps. Это на самом деле небольшая часть гораздо большего запроса, если вам интересно увидеть все это, или если было бы полезно увидеть все это.

1 Ответ

2 голосов
/ 07 октября 2011

Проблема здесь:

having MAX(update_datetime)

Ожидается логическое выражение (логически истинное или ложное), например MAX(update_datetime) = <something>. У вас нет выражения, которое можно оценить как истинное или ложное, потому что вам не с чем сравнивать.

Судя по вашему запросу (если я что-то не вижу), вы можете просто полностью удалить HAVING. GROUP BY в совокупности MAX должно дать вам то, что вы хотите. (Я бы посоветовал вам назвать получившийся столбец, используя для ясности что-то вроде MAX(update_datetime) AS MaxDateTime.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...