Мне нужно сравнить две таблицы в каждой строке. таблицы следующие: -
Таблица:
ID First_Name Last_name Birthdate
1 Shradha Deshkmukh 1981-12-25 00:00:00
2 Shradha Verma 1981-05-11 00:00:00
3 Divya Dutta 1982-07-21 00:00:00
4 Matthew Palmer 1983-12-28 00:00:00
таблица d: -
id fn ln dob
1 Shradha Tiwari 1981-12-25 00:00:00
2 Divya Dutta 1983-07-21 00:00:00
3 Sulabh Manesar 1975-09-11 00:00:00
4 Matthew Palmer 1983-12-28 00:00:00
5 Samuel Maxwell 1984-05-22 00:00:00
Теперь моя исходная таблица содержит около 17 столбцов, и это просто более простая версия. Таблицы «A» и «D» генерируются запросом. Таблица «A» будет заполнена, а таблица D будет похожа на временную таблицу, которая получает свои значения из запроса, сравнивает все имена в каждой таблице и, если она сталкивается с какими-либо изменениями, должна обновить таблицу журнала. По имени а также упоминает все столбцы, которые отличаются.
Для этого я создал временную таблицу, а именно. '#TMP_COMPARE', который принимает все столбцы таблицы 'a'. а затем сравнивает эти столбцы со столбцами таблицы 'd', и в ней есть столбцы PLN, PDOB, Pmatch, которые по умолчанию имеют значения 0 и имеют значение 1, если все столбцы совпадают для этой строки (Pmatch = 1), совпадает фамилия (PLN = 1), Dob соответствует (Pdob = 1).
Как только этот '#TMP_COMPARE' сравнивает две таблицы, я обновлю таблицу журналов столбцами, которые не соответствуют имени.
USE Testing
GO
IF OBJECT_ID('TEMPDB..#TMP_COMPARE') is not null
BEGIN
DROP TABLE #TMP_COMPARE
END
CREATE TABLE #TMP_COMPARE(
FN varchar(20),
LN varchar(20),
dob smalldatetime,
PLN int default 0,
Pdob int default 0,
Pmatch int default 0)
BEGIN
INSERT INTO #TMP_COMPARE
SELECT a.fn, a.ln, a.dob,
case when a.ln = d.Last_name AND a.dob = d.Birthdate
THEN 1
END AS #TMP_COMPARE.PMATCH,
CASE WHEN a.dob <> d.Birthdate
THEN 0
WHEN a.dob = d.Birthdate then 1
END AS #TMP_COMPARE.Pdob,
CASE WHEN a.ln <> d.Last_name
THEN 0
WHEN a.ln = d.Last_name
then 1
END AS #TMP_COMPARE.PLN
FROM dbo.a2 as a
JoIN d ON a.fn = d.First_Name
END
SELECT * FROM #TMP_COMPARE
Ошибка, которую я получаю: -
Msg 102, Level 15, State 1, Line 24
Incorrect syntax near '.'
Что не так в моем запросе, и я должен сделать это любым другим способом, пожалуйста, совет.
Теперь это что-то очень простое, что неправильно в моем запросе, но я новичок, и любая помощь очень ценится.
Спасибо заранее,
DCS