Как выполнить рекурсивный запрос SQL, исключив дубликаты из результатов - PullRequest
0 голосов
/ 09 января 2020

У меня есть таблица, содержащая идентификационные данные (UnitID), почтовый индекс, количество спален и оценку имущества. Мне нужно выяснить, какие свойства с одинаковым почтовым индексом и одним и тем же количеством спален имеют разные оценки свойств.

Образец набора данных

SELECT  'B' AS GroupID
        ,U.UNITID AS [Unit ID]
        ,A.postcode AS Postcode
        ,U.NOOFBEDROOMS AS [No Of Bedrooms]
        ,U.PROPERTYVALUE1999 AS [Property Valuation]
        ,A.postcode + ' | ' + CAST(U.NOOFBEDROOMS AS varchar(3)) AS CheckID
INTO #A_PropertyValue1999
FROM    landingax.hpmunitstaging U
LEFT JOIN LandingCRM.hsl_asset A ON U.UNITID = A.reference
WHERE   U.CONTROLSTATUSID = 'Active'
AND     U.PROPERTYVALUE1999 IS NOT NULL

Затем я запустил этот запрос, чтобы проверить различия (объединяя почтовый индекс и номер спальни в качестве идентификатора для объединения двух):

SELECT  DISTINCT 'A' AS GroupID
        ,U.UNITID AS [UnitID A]
        ,A.postcode AS Postcode
        ,U.NOOFBEDROOMS AS [No Of Bedrooms]
        ,U.PROPERTYVALUE1999 AS [Property A Valuation]
        ,A.postcode + ' | ' + CAST(U.NOOFBEDROOMS AS varchar(3)) AS CheckID
        ,#A_PropertyValue1999.[Unit ID] AS [UnitID B]
        ,#A_PropertyValue1999.[Property Valuation] AS [Property B Valuation]
FROM    landingax.hpmunitstaging U
LEFT JOIN LandingCRM.asset A ON U.UNITID = A.hsl_reference
INNER JOIN  #A_PropertyValue1999 ON A.postcode + ' | ' + CAST(U.NOOFBEDROOMS AS varchar(3)) = #A_PropertyValue1999.CheckID 

Проблема в том, что я получаю несколько строк для одного и того же исключения, потому что когда свойство A и свойство B различаются, возвращается свойство B и свойство A в качестве исключения - следующая таблица может объяснить проблему более четко:

образец результаты, показывающие дубликаты в наборе результатов

Пример того, чего я пытаюсь избежать - строка 1 дублируется в строке 2, только UnitID переключается вокруг

Извинения Я не знаю, как поместить таблицы данных в более читаемый формат:

Пример данных

Unit ID Postcode    No Of Bedrooms  PROPERTYVALUE1999   CheckID
U034    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1
U037    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1
U036    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1
U995    ZZ1 1ZZ 2   85000   ZZ1 1ZZ | 2
U032    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1
U031    ZZ1 1ZZ 2   45000   ZZ1 1ZZ | 2
U033    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1
U035    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1

Текущие результаты f rom мой запрос:

UnitID A    Postcode    No Of Bedrooms  Property A Valuation    CheckID UnitID B    Property B Valuation
U031    ZZ1 1ZZ 2   45000   ZZ1 1ZZ | 2 U995    85000
U032    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U034    85000
U032    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U037    85000
U033    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U034    85000
U033    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U037    85000
U034    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U032    65000
U034    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U033    65000
U034    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U035    65000
U034    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U036    65000
U035    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U034    85000
U035    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U037    85000
U036    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U034    85000
U036    ZZ1 1ZZ 1   65000   ZZ1 1ZZ | 1 U037    85000
U037    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U032    65000
U037    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U033    65000
U037    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U035    65000
U037    ZZ1 1ZZ 1   85000   ZZ1 1ZZ | 1 U036    65000
U995    ZZ1 1ZZ 2   85000   ZZ1 1ZZ | 2 U031    45000

Пример того, что я пытаюсь избежать - 2 строки для одного и того же исключения, единственная разница в том, что Единица A становится Единицей B и наоборот

UnitID A    Postcode    No Of Bedrooms  Property A Valuation    CheckID UnitID B    Property B Valuation
U031    ZZ1 1ZZ 2   45000   ZZ1 1ZZ | 2 U995    85000
U995    ZZ1 1ZZ 2   85000   ZZ1 1ZZ | 2 U031    45000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...