外部キーなしでテーブルを結合するための情報を検索しようとしましたが、答えは常に外部キーを作成することです。これを行うために問題のテーブルを変更することはできません。また、既に運用されているデータについて報告する必要があります。以下は、問題を例示するために関連する表のデータの一部です。
Table A
Journal Account Debit Credit Sequence
--------------------------------------------------
87041 150-00 100.00 0.00 16384
87041 150-10 0.00 100.00 32768
87041 150-00 50.0 0.0 49152
87041 210-90 0.0 50.0 65536
次に、追加の情報を追跡する 2 番目のテーブルは、ほとんど同じですが、明細項目を適切に結び付けるシーケンス番号がありません。関係のない独自のシーケンス番号があります。
Table B
Journal Account Label Artist Sequence
--------------------------------------------------
87041 150-00 Label02 Artist12 1
87041 150-10 Label09 Artist03 2
87041 150-00 Label04 Artist01 3
87041 210-90 Label01 Artist05 4
現時点で思いつく最善の方法は、Journal と Account に参加することですが、それではレコードが重複します。私はグループ化とシーケンス番号の max() をいじって近づいてきましたが、その結果、行数が非常に多いジャーナルエントリのすべての重複が削除されるわけではなく、2 番目のテーブルからの最初の一致が常に表示されます。同じアカウントを持つ行。
Closest - but bad - result
Journal Account Debit Credit Sequence Label Artist
----------------------------------------------------------------------
87041 150-00 100.00 0.00 16384 Label02 Artist12
87041 150-10 0.00 100.00 32768 Label09 Artist03
87041 150-00 50.0 0.0 49152 Label02 Artist12 <-- wrong
87041 210-90 0.0 50.0 65536 Label01 Artist05
重複が除外され、正しいレーベルとアーティストが表示されるようにテーブルを結合するにはどうすればよいですか? テーブル A の 49152 レコードが一致を探しているときに、テーブル B のレコードの 1 つが既に使用されていることを認識しているクエリを作成する必要があるように感じます。
編集:
@Justin Crabtree A.Sequence は、項目が入力された順序になります。したがって、ユーザーは例の最後の行を最初に入力し、次に最初の行、3 番目、最後に 2 番目の行を入力することができます。
@Edper Microsoft SQL Server...うーん、今朝クライアントのマシンにリモート接続できません...そうでなければ、バージョンを提供します。
@Abe Miessler はい、あなたは正しいです。
サーバーに戻ることができたらすぐに、あなたの提案を試してみます@pkuderov