2011-12-05 111 views
0

我有這樣的SQL語句運行時異常用VB(ASP.NET)SQL語句

System.Data.SqlClient.SqlException了未處理由用戶代碼
類= 16
錯誤碼= -2146232060
LineNumber上= 1
消息= C olumn 'Association.Name'在選擇列表中無效,因爲它不是包含在集合函數或GROUP BY子句中的 。

我有這個異常,當我加入了where子句中,這似乎是編譯器無法看到該集團依據部分,因爲之前它結束的報價,我試圖寫這樣的:

de.SqlStatement = "SELECT A.Name, A.Catagory , COUNT(Patient_ID) AS PNO FROM PatientApplyToAssociation P INNER JOIN Association A on A.Association_ID = P.Association_ID WHERE A.Catagory='" & "health" & "' GROUP BY A.Name '" & " '"

但這是一個Incorrect syntax near ' '

任何想法?

回答

3

我敢肯定你不想周圍的GROUP BY子句'

SELECT A.Name, A.Catagory 
    , COUNT(Patient_ID) AS PNO 
    FROM PatientApplyToAssociation P 
INNER JOIN Association A 
    ON A.Association_ID = P.Association_ID 
WHERE A.Catagory='" & "health" & " '" & " GROUP BY A.Name 
2

爲了使用本聲明你原來的問題,你將需要修改它是:

de.SqlStatement = "SELECT A.Name, A.Catagory, COUNT(1) AS PNO FROM PatientApplyToAssociation P INNER JOIN Association A on A.Association_ID = P.Association_ID WHERE A.Catagory='health' GROUP BY A.Name, A.Catagory" 

有在此聲明3個變化:

1)外來串在其中,並通過組已被刪除連接。

2)已添加A.Catagory分組,以便您不會再收到類似於此字段問題中的錯誤的其他錯誤。

3)COUNT(Patient_ID)已被更改爲COUNT(1)作爲一種可能更好的做法。如果您正在計數的字段包含空值,則不會包含在計數中。如果這是所需的行爲,那麼你以前的代碼是正確的;否則你應該使用修訂。