您發佈的表架構沒有包含總和金額的字段。我將其稱爲Amount
。
首先,創建一個交叉表查詢,並將其保存在數據庫中(我把它叫做ct
):
TRANSFORM Sum(Amount) AS SumOfAmount
SELECT ProjectID, InvoiceType
FROM Invoices
GROUP BY ProjectID, InvoiceType
PIVOT InvoiceChannel In ("Coding","Designing","Consulting");
這會給你的ProjectID
和InvoiceType
作爲前兩列,其中一個「編碼」,「設計」和「諮詢」各增加一列。
爲了得到總,你需要另一個查詢:
SELECT ct.*, Coding + Designing + Consulting AS Total
FROM ct;
請記住,如果沒有記錄特定ProjectID
/InvoiceType
/InvoiceChannel
,查詢將返回NULL
該組合,這將導致Total
爲NULL
。如果該查詢將在訪問運行(通過Access.Application
說),你可以使用Nz
功能,它的工作方式類似於??
運營商在C#:
SELECT ct.*, Nz(Coding,0) + Nz(Designing,0) + Nz(Consulting,0) AS Total
FROM ct;
如果您是從.mdb
或.accdb
通過ADO.NET訪問數據使用OleDbProvider,你可能將無法使用Nz
,你將不得不使用更復雜的東西:
SELECT ct.*,
Iif(IsNull(Coding), 0, Coding) +
Iif(IsNull(Designing), 0, Designing) +
Iif(IsNull(Consulting), 0, Consulting) AS Total
FROM ct;
遺憾。我已更新問題。加上我不需要跨標籤查詢。我只關心查詢單個表「發票」。我會嘗試你的方法並讓你知道。謝謝... – naveen
如何在沒有交叉表查詢的情況下以您希望的形式從「發票」表中獲取數據? –
讓我們說我擁有所有我希望發票計數的項目ID。兩個表都在不同的mdbs – naveen