システムAとシステムBの2つのシステム間でデータを比較するクエリを作成する必要があります。最終出力テーブルでは、SystemA_Field
、SystemB_Field
、SystemA_Value
、SystemB_Value
以下)。SQL Server:複数のテーブルの値を比較する
これは2つのシステムの値と2つのシステムの列の名前を比較します。
つまり、列は列の値とともに行内にある必要があります。
システムAとシステムBの2つのシステム間でデータを比較するクエリを作成する必要があります。最終出力テーブルでは、SystemA_Field
、SystemB_Field
、SystemA_Value
、SystemB_Value
以下)。SQL Server:複数のテーブルの値を比較する
これは2つのシステムの値と2つのシステムの列の名前を比較します。
つまり、列は列の値とともに行内にある必要があります。
は、あなたの内側のクエリからの結果と何が問題なのですか?
SELECT
ContractType,
LeaseType,
ContractNo,
ContractNumber
FROM
TableOne INNER JOIN
TableA ON
ContractNo = ContractNumber
WHERE
ContractNo = 101
出力表が見えましたか?列は行内になければなりません。 – Apollo
彼らは常に一致する必要があるためあなたは、出力ContractNo & ContractNumberする必要はありません。
SELECT t1.ContractNo, t2.ContractNumber,
CASE
WHEN t1.ContractType != t2.LeaseType THEN 'ContractType'
WHEN t1.[Address] != t2.AddressMain THEN 'Address'
ELSE 'N/A' END as SystemA_Field,
CASE
WHEN t1.ContractType != t2.LeaseType THEN 'LeaseType'
WHEN t1.[Address] != t2.AddressMain THEN 'AddressMain'
ELSE 'N/A' END as SystemB_Field,
CASE
WHEN t1.ContractType != t2.LeaseType THEN CAST(ContractType as VARCHAR)
WHEN t1.[Address] != t2.AddressMain THEN CAST(Address as VARCHAR)
ELSE 'N/A' END as SystemA_Value,
CASE
WHEN t1.ContractType != t2.LeaseType THEN CAST(LeaseType as VARCHAR)
WHEN t1.[Address] != t2.AddressMain THEN CAST(AddressMain as VARCHAR)
ELSE 'N/A' END as SystemB_Value
FROM Table1 as t1
INNER JOIN Table2 as t2
ON t1.ContractNo = t2.ContractNumber
WHERE t1.ContractType != t2.LeaseType
OR t1.[Address] != t2.AddressMain
はところであなたはレッドゲートのSQLの比較を見てきましたか? http://www.red-gate.com/products/sql-development/sql-comparison-sdk/
すべてのテーブルには同等のIDフィールドがありますか?あるいは、列を順序付けして厳密に比較していますか?それでも、テーブル名が異なる場合は、システム間でテーブル名をマッピングする必要があります。 – Beth
これらのテーブルをリンクするフィールドがない場合、無駄な結果をもたらす2つのテーブルのデカルト積となります。 –
@Bethはい、すべてのテーブルには同等の列があります。 – Apollo