繁体   English   中英

将事实表连接到维度并为每个连接创建新行

[英]Join Fact Table to Dimension and create new row for each join

我有以下表格:

  • 包含评论的事实表,每个评论有一个或多个驱动程序
  • 为每个驱动程序分配一个存储桶的驱动程序维度表

我想编写一个脚本来连接这些表,每个评论 ID 的每个存储桶都有一行,如下面的 TransformedTable 所示

原始表和期望的结果

我尝试使用各种连接,但无法获得预期的结果。 谢谢

您的数据 model 是错误的,错误的,错误的。 你应该修好吗? 为什么是错的?

  • 您不应该在一列中存储多个值。
  • 您不应该将数字存储为字符串。
  • 您应该已正确声明外键关系。
  • SQL 服务器(以及一般的 SQL)具有糟糕的字符串处理能力。
  • SQL 具有存储值列表的好方法。 它被称为表!

有时我们会被其他人非常非常非常糟糕的决定所困扰。 如果是这样,您可以做任何您想做的事,但查询不会有效率:

select rf.reviewid, d.bucket as driver
from reviewfactable rf cross apply
     string_split(rt.driver, ',') s join
     driverdimenstiontable dd
     on s.value = dd.driver;

您也可以使用like来表达这一点:

select rf.reviewid, d.bucket as driver
from reviewfactable rf join
     driverdimenstiontable dd
     on concat(',', s.value, ',') like concat('%,' dd.driver, ',%');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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