[英]Comparing a FACT table and a DIMENSION table's two columns for NULL and NOT NULL answers
我想将维度表与每天将数据加载到其中的表进行比较。
维度表包含两列...可以将它们称为Name和Name_ID,而每日表包含相同的列,还有更多其他列
>+-------+-------+
|Name |Name_ID|
+-------+-------+
|value1 |value1 |
|value2 |value3 |
|value4 |value4 |
>+-------+-------+
我需要做的是比较表以查看是否将要导入到每日表中的值包含在维度表中,然后将Name_ID添加到每日表中,但将Name保持为NULL或如果Name的值不在维度表中,则只需将名称添加到每日表格中,并将Name_ID保留为NULL
我知道这是一个简单的比较,可以在ac#脚本中完成,但是我一直在寻找SSIS或SQL脚本中的更多解决方案。
谢谢
这应该可以解决问题:
INSERT INTO dim_table (Name, Name_ID)
SELECT NULL as Name, Name_ID
FROM daily_table x
WHERE NOT EXISTS (
SELECT *
FROM dim_table y
WHERE x.Name_ID = y.Name_ID
)
UNION
SELECT Name, NULL as Name_ID
FROM daily_table x
WHERE NOT EXISTS (
SELECT *
FROM dim_table y
WHERE x.Name = y.Name
)
INSERT INTO dimtab (Name, Name_ID)
SELECT NULL as Name, Name_ID FROM dailytab t1
WHERE Name_ID NOT IN (SELECT NAME_ID FROM dimtab t2
WHERE t1.Name_ID = t2.Name_ID)
UNION
SELECT Name, NULL as Name_ID FROM dailytab t1
WHERE Name NOT IN (SELECT Name FROM dimtab t2
WHERE t1.Name = t2.Name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.