VB(ASP.NET)中SQL语句的运行时异常

VB(ASP.NET)中SQL语句的运行时异常,asp.net,sql,vb.net,Asp.net,Sql,Vb.net,我有以下SQL语句: de.SqlStatement=“选择A.Name、A.Catagory、COUNT(Patient_ID)作为PNO从PatientApply到Association p内部加入A.Association_ID=p.Association_ID上的A.Association A,其中A.Catagory=”&“health”&“按A.Name分组” 除此之外: System.Data.SqlClient.SqlException未由用户代码处理 等级=16 错误代码=-2

我有以下SQL语句:

de.SqlStatement=“选择A.Name、A.Catagory、COUNT(Patient_ID)作为PNO从PatientApply到Association p内部加入A.Association_ID=p.Association_ID上的A.Association A,其中A.Catagory=”&“health”&“按A.Name分组”

除此之外:

System.Data.SqlClient.SqlException未由用户代码处理
等级=16
错误代码=-2146232060
行号=1
消息=列 “Association.Name”在选择列表中无效,因为它不是 包含在聚合函数或GROUP BY子句中

当我添加where子句时,我有一个例外,编译器似乎无法看到分组,因为引号在它前面结束,我试着这样写:

de.SqlStatement=“选择A.Name、A.Catagory、COUNT(Patient\u ID)作为PNO从PatientApply到Association p内部连接A.Association\u ID=p.Association\u ID,其中A.Catagory=”&“health”&“groupby A.Name”&“&”

但它在“附近的语法不正确


有什么想法吗?

我很确定您不想在
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

我很确定,您不希望
围绕
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

为了在原始问题中使用该陈述,您需要将其修改为:

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) Group by
A.已添加分类
,因此您不会收到与此字段问题中的错误类似的另一个错误


3)
计数(患者ID)
已更改为
计数(1)
,这可能是更好的做法。如果正在计数的字段包含空值,则该字段将不包括在计数中。如果这是期望的行为,那么您以前的代码是正确的;否则,您应该使用修订版。

为了在原始问题中使用该陈述,您需要将其修订为:

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) Group by
A.已添加分类
,因此您不会收到与此字段问题中的错误类似的另一个错误

3)
计数(患者ID)
已更改为
计数(1)
,这可能是更好的做法。如果正在计数的字段包含空值,则该字段将不包括在计数中。如果这是期望的行为,那么您以前的代码是正确的;否则,您应该使用修订版