我有这个SQL语句:
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 '"
有这个例外:
System.Data.SqlClient.SqlException未被用户代码
处理 类= 16
错误码= -2146232060
LineNumber上= 1
消息=列 'Association.Name'在选择列表中无效,因为它不是 包含在聚合函数或GROUP BY子句中。
当我添加了where子句时,我遇到了这个异常,似乎编译器看不到Group By Section,因为它之前的引用结束了,我试着这样写:
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 ' '
。
有什么想法吗?
答案 0 :(得分: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
答案 1 :(得分: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)已删除where和group by中的无关字符串连接。
2)已添加A.Catagory
分组,这样您就不会收到与此字段问题中的错误类似的其他错误。
3)COUNT(Patient_ID)
已更改为COUNT(1)
,可能是更好的做法。如果您计算的字段包含空值,则它不会包含在计数中。如果这是所需的行为,那么您之前的代码是正确的;否则你应该使用修订。