C# 添加SUM()表达式会导致Access查询停止工作
在将C# 添加SUM()表达式会导致Access查询停止工作,c#,winforms,ms-access,C#,Winforms,Ms Access,在将SUM(b.[Amount\u withDiscount])和表上的内部联接添加到以前有效的查询后,Select查询出现以下错误。现在,我希望查询还返回相关表中该列的总和。我哪里出错了 您试图执行的查询未将指定的表达式“p.[PFirstName]&”&p.[PLastName]”作为聚合函数的一部分 工作查询 string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[
SUM(b.[Amount\u withDiscount])
和表上的内部联接添加到以前有效的查询后,Select查询出现以下错误。现在,我希望查询还返回相关表中该列的总和。我哪里出错了
您试图执行的查询未将指定的表达式“p.[PFirstName]&”&p.[PLastName]”作为聚合函数的一部分
工作查询
string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[BirthDate],p.[MobileNo]&' / '&p.[LandlineNo] as [Contact Number] FROM Patient_Registration p WHERE datepart('m',p.[RegDate])=@month AND datepart('yyyy',p.[RegDate])=@year AND p.DoctorID=" + drId;
string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[BirthDate],p.[MobileNo]&' / '&p.[LandlineNo] as [Contact Number], SUM(b.[Amount_withDiscount]) as [Payable Amount] FROM Patient_Registration p INNER JOIN Bill_Master b on p.[PatientID]=b.[Patient_ID] WHERE datepart('m',p.[RegDate])=@month AND datepart('yyyy',p.[RegDate])=@year AND p.DoctorID=" + drId;
添加总和和内部联接后的查询
string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[BirthDate],p.[MobileNo]&' / '&p.[LandlineNo] as [Contact Number] FROM Patient_Registration p WHERE datepart('m',p.[RegDate])=@month AND datepart('yyyy',p.[RegDate])=@year AND p.DoctorID=" + drId;
string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[BirthDate],p.[MobileNo]&' / '&p.[LandlineNo] as [Contact Number], SUM(b.[Amount_withDiscount]) as [Payable Amount] FROM Patient_Registration p INNER JOIN Bill_Master b on p.[PatientID]=b.[Patient_ID] WHERE datepart('m',p.[RegDate])=@month AND datepart('yyyy',p.[RegDate])=@year AND p.DoctorID=" + drId;
添加SUM()
表达式时,您将查询从常规的Select查询更改为聚合查询,该查询要求每个输出字段
- 聚合函数的一部分(
SUM()
,MAX()
等),或
- 包含在GROUPBY子句中(该子句不在查询中)
在这种情况下,对于一个求和,您最好使用DSum()
而不是sum()
,如中所示
string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[BirthDate],p.[MobileNo]&' / '&p.[LandlineNo] as [Contact Number], DSum(\"Amount_withDiscount\",\"Bill_Master\",\"Patient_ID=\" & p.[PatientID]) as [Payable Amount] FROM Patient_Registration p WHERE datepart('m',p.[RegDate])=@month AND datepart('yyyy',p.[RegDate])=@year AND p.DoctorID=" + drId;
添加SUM()
表达式时,您将查询从常规的Select查询更改为聚合查询,该查询要求每个输出字段
- 聚合函数的一部分(
SUM()
,MAX()
等),或
- 包含在GROUPBY子句中(该子句不在查询中)
在这种情况下,对于一个求和,您最好使用DSum()
而不是sum()
,如中所示
string sql = "SELECT p.[PFirstName]&' '&p.[PLastName] as [Patient Name],p.[Age],p.[BirthDate],p.[MobileNo]&' / '&p.[LandlineNo] as [Contact Number], DSum(\"Amount_withDiscount\",\"Bill_Master\",\"Patient_ID=\" & p.[PatientID]) as [Payable Amount] FROM Patient_Registration p WHERE datepart('m',p.[RegDate])=@month AND datepart('yyyy',p.[RegDate])=@year AND p.DoctorID=" + drId;
那么如何在这个查询中编写内部联接呢?@Durga如果使用DSum()
,则不需要在主查询中进行联接DSum()
是一个域聚合函数,它执行自己的子查询。有关DSum()
的更多信息,请看。是的,你是对的,谢谢:),你能告诉我另一件事吗DSum
将采用什么数据类型格式,我指的是int或decimal?因为它向我显示数据类型不匹配
获取此错误。应付金额和.应付金额具有冲突的属性:数据类型属性不匹配。
在数据集中,我已将此列设置为INT32
我尝试将其设置为十进制
also@DurgaDSum()
应该返回与列[Amount_withDiscount]类型相同的值,或者如果找不到匹配的记录,则返回DBNull.value
值。如何在该查询中写入内部联接?如果使用DSum()
则不需要在主查询中进行联接DSum()
是一个域聚合函数,它执行自己的子查询。有关DSum()
的更多信息,请看。是的,你是对的,谢谢:),你能告诉我另一件事吗DSum
将采用什么数据类型格式,我指的是int或decimal?因为它向我显示数据类型不匹配获取此错误。应付金额和.应付金额具有冲突的属性:数据类型属性不匹配。
在数据集中,我已将此列设置为INT32
我尝试将其设置为十进制
also@DurgaDSum()
应返回与列[Amount_withDiscount]类型相同的值,或者如果未找到匹配记录,则返回DBNull.value
。