投稿されたテーブルスキーマには、合計する金額を含むフィールドがありません。私はそれをと呼びAmount
ます。
まず、クロス集計クエリを作成し、データベースに保存します(私はそれを呼び出しましたct
):
TRANSFORM Sum(Amount) AS SumOfAmount
SELECT ProjectID, InvoiceType
FROM Invoices
GROUP BY ProjectID, InvoiceType
PIVOT InvoiceChannel In ("Coding","Designing","Consulting");
これにより、ProjectID
とInvoiceType
が最初の2列になり、「コーディング」、「設計」、「コンサルティング」にそれぞれ1列ずつ追加されます。
合計を取得するには、別のクエリが必要です。
SELECT ct.*, Coding + Designing + Consulting AS Total
FROM ct;
特定のProjectID
//のレコードがない場合、クエリはその組み合わせに対して返され、結果として。になることに注意してください。このクエリがAccessで(たとえば経由で)実行される場合は、C#の演算子のように機能する関数を使用できます。InvoiceType
InvoiceChannel
NULL
Total
NULL
Access.Application
Nz
??
SELECT ct.*, Nz(Coding,0) + Nz(Designing,0) + Nz(Consulting,0) AS Total
FROM ct;
.mdb
OleDbProviderを使用してまたはADO.NET経由でデータにアクセスしている場合は.accdb
、おそらく使用できずNz
、より複雑なものを使用する必要があります。
SELECT ct.*,
Iif(IsNull(Coding), 0, Coding) +
Iif(IsNull(Designing), 0, Designing) +
Iif(IsNull(Consulting), 0, Consulting) AS Total
FROM ct;