我正在處理一個查詢,該查詢將簡化我在寄宿舍的發票歷史記錄(以及比較收據)。從其他方面相同的行中添加合計
而不是手動完成它,我正在從數據庫中抓取數據庫中的數據。我認爲我有一個非常好的開始,但我有一個問題。
使用Microsoft Access,我添加了具有所有信息幾張桌子之間的一些關係(它使用內部連接),我有一個SQL語句是這樣的:
SELECT
Invoices.InDate,
Pets.PtPetName,
[IIQuantity]*[IIEach] AS Expr1,
Clients.CLLastName,
InvoiceItems.IIItemCodeDesc,
Invoices.InSeq
FROM
(((Clients INNER JOIN Pets ON Clients.CLSeq = Pets.PtOwnerCode)
INNER JOIN
Invoices ON Clients.CLSeq = Invoices.InClientSeq)
INNER JOIN
InvoiceItems ON (Invoices.InSeq = InvoiceItems.IIInvSeq)
AND (Pets.PtSeq = InvoiceItems.IIPetSequence))
INNER JOIN
Inventory ON InvoiceItems.IIItemCode = Inventory.InvSeq
WHERE
(((Invoices.InDate)>#12/31/2012#))
ORDER BY
Invoices.InSeq;
這給了我的東西像:
DATE | NAME | TOTAL | LNAME | INVSEQ
----------------------------------------
1/1/2013 | ODIE | 15 | SMITH | 12344
1/1/2013 | ODIE | 60 | SMITH | 12344
1/1/2013 | YODA | 10 | QWERT | 12345
1/1/2013 | YODA | 25 | QWERT | 12345
1/1/2013 | YODA | 80 | QWERT | 12345
1/1/2013 | C3PO | 10 | QWERT | 12345
1/1/2013 | C3PO | 80 | QWERT | 12345
在這種情況下,它的發生是因爲ODIE有一個浴缸以及登機,並YODA得到了一個澡,登機,和別的東西,在這裏得到了C3PO只是洗澡和登機。
我想的是:
DATE | NAME | TOTAL | LNAME | INVSEQ
----------------------------------------
1/1/2013 | ODIE | 75 | SMITH | 12344
1/1/2013 | YODA | 115 | QWERT | 12345
1/1/2013 | C3PO | 90 | QWERT | 12345
所以基本上如果petname和invseq在任何相同/所有invseqs,加起來的總額(表達式1),並使其一行。
我剛剛開始搞亂SQL和Access來解決這個問題,我真的不知道從哪裏開始。我可以在各種表格上給出更多的信息(但它們都非常混亂,因爲狗窩軟件是用來處理它們的,而不是我)。
完全有必要擁有WHERE date >
,因爲它大約有15K行,我的電腦不喜歡那樣。這削減到一個非常有用的〜500。
出口到excel會不會更容易一些,並且做一些優秀的魔法呢?我想得到一個好的解決方案,並不特別是我認爲會是一個好的解決方案。
你說得對,InvoiceItems.IIItemCodeDesc不需要在那裏,我忘了把它帶出查詢。這是完美的,我將不得不更多地瞭解它正在發生的事情,我對此不甚瞭解。我可能會問DBA我在哪裏工作一些。我確實有更多的工作要做(將IIItemCodeDesc與數量全部合併爲一行,例如3 BOARD 3 BDC 1 BATH),但現在我知道可以做很多工作。 – Rob 2013-04-28 00:38:50