Мне нужно объединить две таблицы на основе некоторых условий. Сказка в моем ежедневном входе. Мне нужно объединить таблицу src с таблицей mstr, основываясь на некоторых критериях, как показано ниже.
- Если я получу соединение между двумя таблицами по memberid, fname и lname, тогда мне нужно взять dob из таблицы mstr.
- Если я не получаю подходящих критериев на вышеуказанной основе, тогда мне нужно присоединиться только по идентификатору участника, а затем взять dob. Если в MSTR доступно несколько записей по идентификатору члена, тогда мне нужно выбрать ту запись, у которой есть самая старая из dob.
- Если я не получаю совпадение с помощью memberid, то также необходимо случайным образом создать fname, которое будет представлять собой xx + 5 случайных чисел, lname будет ZZ + 5 случайных чисел и dob в качестве сегодняшней даты - 110 лет.
Это то, что я пробовал, чтобы помочь вам ускорить решение. Я предоставляю пример данных для обеих таблиц
declare @src table (memberids int, fnames varchar(25), lnames varchar(25));
insert into @src values
(1, 'Ankit','Bansal'),
(2, 'Dinesh','Bansal'),
(3, 'Sushil','Dania'),
(4, '',''),
(5, Null ,Null),
(10,Null,Null)
select * from @src
declare @mstr table (memberid int, fname varchar(25), lname varchar(25),dob date);
insert into @mstr values
(1, 'Ankit','Bansal','2010-06-24'),
(2, 'Dinesh','Bansal','2009-06-24'),
(3, 'Sushil','Dania','2000-06-24'),
(4, 'Sunil','Wadh','2011-06-24'),
(5, 'Suresh','Bansal','2000-06-24'),
(5, 'Animesh','Bajaj','2001-06-24'),
(6, 'Dhiresh','Jain','2001-06-24');
select * from @mstr;
Это запрос, который я написал.
select memberids, fnames, lnames, a.dob
from @src
outer apply
(select dob
from @mstr where memberids = memberid and fnames = fname
and lnames = lname) a ;
Текущий результат, который я получаю:
memberids fnames lnames dob
1 Ankit Bansal 2010-06-24
2 Dinesh Bansal 2009-06-24
3 Sushil Dania 2000-06-24
4 NULL
5 NULL NULL NULL
10 NULL NULL NULL
Однако вывод должен выглядеть следующим образом
memberids fnames lnames dob
1 Ankit Bansal 24-06-2010
2 Dinesh Bansal 24-06-2009
3 Sushil Dania 24-06-2000
4 Sunil Wadh 24-06-2011
5 Suresh Bansal 24-06-2000
10 XX12345 ZZ123456 Today's Date - 110 years