У меня есть две таблицы, если данные существуют в 1-й таблице, то заполните столбец флага 'Y', если не заполнен 'N', я сравниваю только 3 столбца, один номер, 2-й имя и 3-й столбец datetime , Однако мой регистр правил дела всегда возвращает «Y»
Table 1 (staging table, type1)
column1: number, data (123, 456,756)
column2: name, date('Mike', 'Dray','John')
column3: datetime. data('2018-12-03 14:00:52.000','2018-12-03 14:00:52.000','2018-12-03 14:00:52.000')
Table2 (landing table, type2)
column1 number, data (123, 456,756, 890)
column2: name, date('Mike', 'Dray','John','Chris')
column3: datetime. data('2018-12-03 14:00:52.000','2018-12-03 14:00:52.000','2018-12-03 14:00:52.000','2018-09-20 10:31:39.000')
column4: flagcolumn, data('Y','Y','Y','N')
, поэтому последний столбец 4 в таблице 2 должен заполняться до y / n на основе данных в таблице 1 или нет.
Я написал запрос как:
WITH CDE AS (
SELECT T1.number,T1.name,T1.Bdatetime,
FROM dbo.db.table T1)
,CDE1 AS (
SELECT CDE.*,BUS_RULE_valid = (
select case
when EXISTS (
SELECT number, name, datetime
FROM dbo.db.table T1
WHERE number IN
(SELECT number
FROM dbo.db.table2)
AND name
(SELECT name FROM dbo.db.t2)
AND datetime IN
(SELECT datetime FROM dbo.db.t2))
THEN 'Y'
ELSE 'N'
END)
FROM CDE
)
SELECT * FROM CDE1