簡體   English   中英

為什么在MS Access中有效的SQL查詢在SQL Server中不起作用?

[英]Why does this SQL query that works in MS Access not work in SQL Server?

以下查詢在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。” 我不明白。 誰能告訴我如何使這個查詢工作?

()的派生表需要一個別名,並且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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM