2つのデータソース(テーブル)ODS.dbo.Account_Address__c
とPAF.dbo.Delivery_Addresses
を使用して、テーブルODS.dbo.Account_Address__c
のアドレスデータに関する統計サマリーを作成します。表PAF.dbo.Delivery_Addresses
はルックアップと内部結合用です。SQLクエリの残りの行を見つける方法
CreatedDate=2016-09-28
以降のすべてのデータと、2016-09-28
より前のIsCurrent=1
のデータです。
表1:
SELECT DPID__c,CreatedDate
FROM ODS.dbo.Account_Address__c
WHERE CreatedDate>='2016-09-28'
UNION ALL
SELECT DPID__c,CreatedDate
FROM ODS.dbo.Account_Address__c
WHERE CreatedDate<'2016-09-28' AND IsCurrent=1
全く265773 rows
があります。
次に、PAF.dbo.Delivery_Addresses
、241565 rows
の内部結合でデータをサブセット化しました。
表2:
SELECT
aa.DPID__c, aa.CreatedDate
FROM
ODS.dbo.Account_Address__c aa ,PAF.dbo.Delivery_Addresses da
WHERE
aa.DPID__c = CONVERT(VARCHAR,da.DELIVERY_POINT_ID)
AND aa.CreatedDate>='2016-09-28'
AND aa.DPID__c IS NOT NULL
UNION ALL
SELECT
aa.DPID__c,aa.CreatedDate
FROM
ODS.dbo.Account_Address__c aa ,PAF.dbo.Delivery_Addresses da
WHERE
aa.DPID__c = CONVERT(VARCHAR,da.DELIVERY_POINT_ID)
AND aa.CreatedDate<'2016-09-28'
AND aa.DPID__c IS NOT NULL
AND aa.IsCurrent=1
その後、私は他の2つのサブセットを確認してください。
表3:
NULL 11170 rows
のDPID__c
:
SELECT DPID__c,CreatedDate
FROM ODS.dbo.Account_Address__c
WHERE CreatedDate>='2016-09-28' AND DPID__c IS NULL
UNION ALL
SELECT DPID__c,CreatedDate
FROM ODS.dbo.Account_Address__c
WHERE CreatedDate<'2016-09-28' AND IsCurrent=1 AND DPID__c IS NULL
と内側拒否が12982 rows
が返されたセットを、参加します。
表4:
検証したようSELECT a.DPID__c,a.CreatedDate
FROM
(
SELECT DPID__c,CreatedDate
FROM ODS.dbo.Account_Address__c
WHERE CreatedDate>='2016-09-28' AND DPID__c IS NOT NULL
UNION ALL
SELECT DPID__c,CreatedDate
FROM ODS.dbo.Account_Address__c
WHERE CreatedDate<'2016-09-28' AND DPID__c IS NOT NULL AND IsCurrent=1
) a
EXCEPT
SELECT t.DPID__c,t.CreatedDate
FROM
(
SELECT
aa.DPID__c, aa.CreatedDate
FROM
ODS.dbo.Account_Address__c aa ,PAF.dbo.Delivery_Addresses da
WHERE
aa.DPID__c = CONVERT(VARCHAR,da.DELIVERY_POINT_ID)
AND aa.CreatedDate>='2016-09-28'
AND aa.DPID__c IS NOT NULL
UNION ALL
SELECT
aa.DPID__c, aa.CreatedDate
FROM
ODS.dbo.Account_Address__c aa ,PAF.dbo.Delivery_Addresses da
WHERE
aa.DPID__c = CONVERT(VARCHAR,da.DELIVERY_POINT_ID)
AND aa.CreatedDate<'2016-09-28'
AND aa.DPID__c IS NOT NULL
AND aa.IsCurrent=1
) t
、Count_Row(Table 1)>Count_Row(Table 2)+Count_Row(Table 3)+Count_Row(Table 4)
、まだはTable 1
ではなく、他のテーブルに56
余分な行を持っています。
このギャップがどのように発生する可能性があり、どのように残りを検出することができますか56 rows
?
乾杯
'UNION ALL'表2、表3、表4の結果は' EXCEPT'です。何も返されていない場合は、これらの56行がTable2および/または3および/または4の行の一部と完全に重複していることを意味します。 – Alex
@Alexは良いアドバイスをいただきありがとうございます。 – LUSAQX