[英]literal group works in Access 2010 but not SQl Server 2012
[英]sql running in Access 2010 but not sql server 2012
嗨下面的代碼在訪問中工作(第24行的一部分是為sql server = [Old_DB]添加的。[dbo]。)但在Sql Server 2012中沒有。錯誤說無效列名'E.Analysisstatus'是第16行。什么可能導致它不能在Sql Server中運行。 謝謝
SELECT
P.Semester, P.StudentID, P.Sessions, G.WithNewAnalysis AS RegWithNewAnalysis
FROM
(SELECT
StudentID, Semester, Count(*) AS Sessions
FROM
Stats
WHERE
DateofSession IS not Null
GROUP BY
StudentID, Semester
) AS P
LEFT JOIN
(SELECT
E.StudentID, E.Semester, Count(E.StudentID) AS WithAnalysis,
Sum(IIf([E.Analysisstatus] =1,1,0)) AS WithNewAnalysis /* line 16*/
FROM
(
SELECT
DISTINCT Stats.StudentID, Stats.Semester, Stats.SessionNumber, Analysis.Analysisstatus
FROM
Stats
INNER JOIN
[Old_DB].[dbo].[Analysis] ON Stats.StatsRefNo = Analysis.StatsRefNo /* line 24*/
) AS E
GROUP BY
E.StudentID, E.Semester
) AS G ON (G.StudentID=P.StudentID) AND (G.Semester=P.Semester);
嘗試刪除方括號。 即
Sum(IIf(E.Analysisstatus =1,1,0)) AS WithNewAnalysis
代替
Sum(IIf([E.Analysisstatus] =1,1,0)) AS WithNewAnalysis
我認為E. [Analyststatus]或[E]。[Analyststatus]將是有效的,但在這種情況下系統假設[E.Analyststatus]是不正確的字段名。
刪除Square Brackets,Square Brackets用於使SQL數據引擎知道任何帶空格的對象的名稱是單個名稱,如果我想將表名稱作為Employee Details傳遞,如果我單獨傳遞它,這兩個單詞將被讀作單獨的實體,所以如果你在[員工詳細信息]中傳遞它會提示錯誤,這將讀作一個單詞,它將被SQL接受
在你的情況下E.ANalusisstatus,這里SQL正在讀取它作為單個名稱而不是你提供的Alias所以請將它分開
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.