簡體   English   中英

sql在Access 2010中運行但不是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.

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