Почему этот SQL-запрос, который работает в MS Access, не работает в SQL Server? - PullRequest
0 голосов
/ 12 марта 2012

Следующий запрос работает в MS Access, но не работает в MS SQL Server:

SELECT
  tblSession.PatientID as PID,
  max(tblSession.SessionAttend) - 
    min(tblSession.SessionAttend) + 1 as NumSA,
  max(tblSession.SessionSched) - 
    min(tblSession.SessionSched) + 1 as NumSS FROM
  (
    SELECT top 100 percent
      tblSession.PatientID,
      tblSession.SessionNumber,
      tblSession.SessionDate,
      tblSession.SessionAttend,
      tblSession.SessionSched FROM
      tblPatient INNER JOIN tblSession ON
        tblPatient.PatientID = tblSession.PatientID) WHERE
        (tblSession.SessionDate >= '12/8/2010') AND
        (tblSession.SessionDate <= '5/18/2011') AND
        (tblSession.Status = '2') ORDER BY 
          tblSession.PatientID, tblSession.SessionNumber
  ) GROUP BY tblSession.PatientID

В SQL Server выдает ошибку «Неверный синтаксис рядом с ключевым словом« GROUP »».При наведении курсора на ключевое слово GROUP всплывающая подсказка отображает «Неверный синтаксис рядом с« GROUP ». Ожидается AS, ID или QUOTED_ID».Я не понимаюМожет кто-нибудь сказать мне, как заставить этот запрос работать?

1 Ответ

2 голосов
/ 12 марта 2012

Производная таблица в () нуждается в псевдониме, а ссылки на ее столбцы в списке SELECT обновлены соответственно:

SELECT top 100 percent
  ALIASNAME.PatientID as PID,
  max(ALIASNAME.SessionAttend) - 
    min(ALIASNAME.SessionAttend) + 1 as NumSA,
  max(ALIASNAME.SessionSched) - 
    min(ALIASNAME.SessionSched) + 1 as NumSS FROM
  (
    SELECT top 100 percent
      tblSession.PatientID,
      ...
      ...
      ...
      ...
          tblSession.PatientID, tblSession.SessionNumber
  -- This derived table needs an alias
  ) ALIASNAME 
  GROUP BY ALIASNAME.PatientID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...