我有两个表,如果第一个表中存在数据,则用“y”填充标志列,如果不使用“n”填充,则只比较3列,一列是数字,第二列是名称,第三列是日期时间。然而,我的业务规则案例陈述始终返回“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')
因此,如果数据是否在表1中,表2中的最后一列4应该基于Y/N填充。
我写的查询如下:
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