VB(ASP.NET)中SQL语句的运行时异常
我有以下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
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 byA.已添加分类
,因此您不会收到与此字段问题中的错误类似的另一个错误
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 byA.已添加分类
,因此您不会收到与此字段问题中的错误类似的另一个错误
3) 计数(患者ID)
已更改为计数(1)
,这可能是更好的做法。如果正在计数的字段包含空值,则该字段将不包括在计数中。如果这是期望的行为,那么您以前的代码是正确的;否则,您应该使用修订版