У меня есть две одинаковые исходные таблицы с одинаковыми столбцами, но только значения разные. Обе таблицы не имеют первичных ключей.Выберите Последние записи, сравнив 2 идентичные таблицы
Я хочу, чтобы получить последние записи из этих 2-х таблиц, основанных на этих условиях:
- следует сравнить как Test1 и test2 и на основании последней даты сканирования и BiosID она должна возвращать значение.
- Если BiosID имеет значение NULL, он должен проверить дату последнего сканирования и SerialNumber.
- Если оба BiosID и SerialNumber равны null, он должен проверить имя хоста.
TEST1:
MachineID | Scandate | Account | BiosID | Serial number | Hostname |
1000 | 10-01-2016 | A | Abcd1111 | null | null |
1001 | 11-01-2016 | B | null | 7890 | XYZ |
1002 | 12-02-2016 | C | null | null | PQR |
1003 | 13-01-2016 | D | null | null | DEF |
Test2:
MachineID | Scandate | Account | BiosID | Serial number | Hostname |
1000 | 10-02-2016 | W | Abcd1111| 1234 | ABC |
1001 | 11-02-2016 | X | null | 7890 | null |
1002 | 12-01-2016 | Y | null | null | null |
1003 | 13-02-2016 | Z | null | null| DEF |
В таблице результат должен быть TEST3:
Результат:
MachineID | Scandate | Account | BiosID | Serial number | Hostname |
1000 | 10-02-2016 | W | Abcd1111 | 1234 | ABC |
1001 | 11-02-2016 | X | Null | 7890 | null |
1002 | 12-02-2016 | C | null | null | PQR |
1003 | 13-02-2016 | Z | null | null | DEF |
Раньше я написал код только для проверки последнего сканирования и BiosID.
запрос:
WITH Combined As(
SELECT MachineID,LastHWScan,Account,BiosID,SerialNumber,HostName
FROM TEST1
UNION
SELECT MachineID,LastHWScan,Account,BiosID,SerialNumber,HostName
FROM TEST2
)
, Ordered AS(
SELECT MachineID,LastHWScan,Account,BiosID,SerialNumber,HostName,
ROW_NUMBER() OVER(PARTITION BY BiosID ORDER BY LastHWScan DESC) AS rn
FROM Combined
)
INSERT INTO TEST3(MachineID,LastHWScan,Account,BiosID,SerialNumber,HostName)
SELECT MachineID,LastHWScan,Account,BiosID,SerialNumber,HostName FROM Ordered
WHERE rn=1
Но если BiosID имеет нулевое значение, я не могу получить результат, который требуется. Так может кто-нибудь мне помочь? Спасибо заранее.
Вы могли бы изменили формат вопроса назначения! – FallAndLearn