1

以前に機能していたクエリに追加SUM(b.[Amount_withDiscount])した後、選択クエリに対して次のエラーが発生しinner join on tablesます。ここで、クエリが関連テーブルのその列の合計も返すようにします。どこで間違ったのですか?

指定された式 '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;     
4

1 に答える 1

1

式を追加したときにSUM()、クエリを通常の選択クエリから、各出力フィールドが次のいずれかになることを期待する集計クエリに変更しました。

  • 集約関数の一部 ( SUM()MAX()など)、または
  • GROUP BY 句に含まれています(クエリにはありません)。

この場合、合計が 1 つだけの場合は、次のよう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;     
于 2013-10-21T09:19:26.277 に答える