2013-10-21 64 views
1

在爲以前工作的查詢添加SUM(b.[Amount_withDiscount])inner join on tables之後,我收到Select Query的跟蹤錯誤。現在我希望查詢也返回相關表中該列的總和。我哪裏錯了?添加SUM()表達式會導致我的Access查詢停止工作

試圖執行一個查詢,不包括指定表達式「P [PFirstName] &」「&第[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])[email protected] AND datepart('yyyy',p.[RegDate])[email protected] 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])[email protected] AND datepart('yyyy',p.[RegDate])[email protected] AND p.DoctorID=" + drId;  

回答

1

當您添加的SUM()表達你從常規選擇查詢更改查詢到聚合查詢期望每個輸出字段爲

0一個聚集函數( SUM()MAX()等)的
  • 部分,或者包括在GROUP BY子句(其不存在在查詢)

在這種情況下,只是一個總和,你可能會更好使用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])[email protected] AND datepart('yyyy',p.[RegDate])[email protected] AND p.DoctorID=" + drId;  
+0

,我如何寫內部連接在這個查詢比? – Durga

+0

@Durga如果你使用'DSum()',那麼你不需要在主查詢中進行連接。 'DSum()'是一個域聚合函數,它執行它自己的子查詢。有關'DSum()'外觀[這裏](http://office.microsoft.com/en-ca/access-help/dsum-function-HA001228829.aspx)的更多信息。 –

+0

是的你是對的,謝謝你:),你能告訴我更多的東西'Dsum'將在什麼dataType甲酸酯我的意思是int或小數?因爲它顯示我'DataType不匹配' – Durga

相關問題