繁体   English   中英

比较FACT表和DIMENSION表的两列是否为NULL和NOT NULL答案

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM