0

取引があった数百の重複した顧客アカウントを統合しました。たとえば、顧客「アレクサンダー スミス」と「アレックス スミス」は「アレクサンダー スミス」にマージされました。私たちのcustTableMergeLogでは、古い/新しい顧客アカウントとのこの合併の記録を挿入しました。

このクエリは、無効な顧客を含む ledgerJournalTrans レコードを特定するだけのはずですが、マージされたというレコードがあります。

2行のコメントを外すとうまくいきません...何かアイデアはありますか?

while select ledgerJournalTrans
    where ledgerJournalTrans.AccountType    == LedgerJournalACType::Cust
    notexists join custTable
        where custTable.AccountNum          == ledgerJournalTrans.AccountNum
    //exists join custTableMergeLog
    //    where custTableMergeLog.CustAccountOld  == ledgerJournalTrans.AccountNum
{
    select firstonly custTableMergeLog2
        where custTableMergeLog2.CustAccountOld == ledgerJournalTrans.AccountNum;

    info(strfmt("Account# %1, CustTable Name: %2, CustMergeLog %3", ledgerJournalTrans.AccountNum, CustTable::find(ledgerJournalTrans.AccountNum).Name, custTableMergeLog2.CustAccountOld));

    i++;

    if (i>10)
        break;
}
4

1 に答える 1

1

X ++クエリから実際のSQLへの変換は、必ずしも意図したとおりに機能するとは限りません。機能しない例の1つがあると思います。

custTableMergeLogでクエリを開始し、ledgerJournalTransに参加し、最後にcustTableに参加するとどうなりますか?

このようなもの:

while select custTableMergeLog
     join ledgerJournalTrans
         where custTableMergeLog.CustAccountOld == ledgerJournalTrans.AccountNum
     notexists join custTable
         where custTable.AccountNum == ledgerJournalTrans.AccountNum

それはあなたのために働きますか?

于 2013-01-10T10:37:05.427 に答える