У меня есть две таблицы.Обе таблицы содержат имя участника, но некоторые из них написаны с ошибками.Например, у TableA есть «Bryan», но та же самая партия записана как «Brian» в TableB.
Я хочу присоединиться к таблице A слева с таблицей B со следующими вещами.
1-й, попробуйте присоединиться слеваТаблица B на PartyName (Точное совпадение, в основном совпадение 100%, сначала присоединится)
2-й, затем все, что осталось, попробуйте объединить их с таблицей B на сумму (если имя не совпадает, попытайтесь присоединитьсяс совпадающей суммой) - в выборке они (Пиналь, Брайан)
3-й, если имя и сумма не совпадают, то сопоставьте сумму с разницей +1 или -1 (в приведенном выше примере это Филипп ($ 251 / $ 250)) и Сара ($ 320,36 / $ 321)
TABLE-A
+-----------+--------+
| PartyName | Amount |
+-----------+--------+
| Pinal | 200 |
| Charles | 150 |
| Thomas | 600 |
| Bryan | 450 |
| Philip | 251 |
| Sara | 320.36 |
+-----------+--------+
TABLE-B
+------------+---------+------------------+
| VPartyName | VAmount | VTransactionCode |
+------------+---------+------------------+
| Peenal | 200 | ac92ks92lk |
| Charles | 150 | a1dg254agfa |
| Thomas | 600 | 3tfgqwae4 |
| Brian | 450 | defg4ae5dfsd |
| Phillip | 250 | adg54afdfad |
| Sarah | 321 | dg4a5fgd44yg |
+------------+---------+------------------+
Требуется следующий ВЫХОД
+-----------+--------+-------------------+
| PartyName | Amount | TransactionCode |
+-----------+--------+-------------------+
| Pinal | 200 | ac92ks92lk |
| Charles | 150 | a1dg254agfa |
| Thomas | 600 | 3tfgqwae4 |
| Bryan | 450 | defg4ae5dfsd |
| Philip | 251 | adg54afdfad |
| Sara | 320.36 | dg4a5fgd44yg |
+-----------+--------+-------------------+
РЕДАКТИРОВАТЬ: ниже приведен пример таблицы, он предназначен для объяснения дублирующейся проблемы при выполнении обоих запросов, предложенных здесь Сергом и Вироном.
CREATE TABLE #A(PartyName varchar(100), Amount float)
insert into #A values
('A',200),
('B',200),
('C',200),
('D',450),
('E',251),
('F',320.36)
CREATE TABLE #B(VPartyName varchar(100), VAmount float, VTransactionCode varchar(100))
INSERT INTO #B VALUES
('Peenal',200,'ac92ks92lk'),
('Charles',200,'a1dg254agfa'),
('Thomas ',600,'3tfgqwae4'),
('Brian ',450,'defg4ae5dfsd'),
('Phillip',250,'adg54afdfad'),
('Sarah ',321,'dg4a5fgd44yg')