搭乗犬小屋での請求履歴 (および領収書の比較) を簡素化するクエリに取り組んでいます。
手動で行うのではなく、ソフトウェアが作成するデータベースからデータをスクレイピングする作業を行っています。かなり良いスタートを切ったと思いますが、少し問題があります。
Microsoft Access を使用して、すべての情報を含むいくつかのテーブル間にいくつかのリレーションシップ (INNER JOINS を使用) を追加し、次のような 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
したがって、基本的に、いずれかまたはすべての invseq で petname と invseq が同じ場合は、合計金額 (Expr1) を加算して 1 行にします。
私は SQL と Access をいじり始めたばかりで、このようなことをうまくやり遂げようとしています。さまざまなテーブルについてもう少し情報を提供できます (ただし、私ではなく犬舎ソフトウェアがそれらを処理するように作成されているため、それらはすべてかなり面倒です)。
WHERE date >
約 15,000 行あり、私のコンピューターはそれを好まなかったため、絶対に必要です。これにより、非常に使いやすい〜500に削減されます。
Excel にエクスポートして、代わりに Excel マジックを実行する方が簡単でしょうか? 私は良い解決策を得たいと思っていますが、特に私が良い解決策だと思っていたものではありません。