Sql 如何使用Vertica DB将表连接到视图?
早上好/下午好!我希望有人能帮我做一些简单的事情 诚然,我不是最强的SQL查询设计器。这就是说,我花了几个小时的时间在键盘上敲打脑袋,试图让一个看似简单的三方连接正常工作 注意:我正在查询Vertica数据库 我的问题是:Sql 如何使用Vertica DB将表连接到视图?,sql,vertica,Sql,Vertica,早上好/下午好!我希望有人能帮我做一些简单的事情 诚然,我不是最强的SQL查询设计器。这就是说,我花了几个小时的时间在键盘上敲打脑袋,试图让一个看似简单的三方连接正常工作 注意:我正在查询Vertica数据库 我的问题是: SELECT A.CaseOriginalProductNumber, A.CaseCreatedDate, A.CaseNumber, B.BU2_Key as BusinessUnit, C.product_number_desc as ModelNumber FRO
SELECT A.CaseOriginalProductNumber, A.CaseCreatedDate, A.CaseNumber, B.BU2_Key as BusinessUnit, C.product_number_desc as ModelNumber
FROM pps_sfdc.v_Case A
INNER JOIN reference_data.DIM_PRODUCT_LINE_HIERARCHY B
ON B.PL_Key = A.CaseOriginalProductLine
INNER JOIN reference_data.DIM_PRODUCT C
ON C.product_line_code = A.CaseOriginalProductLine
WHERE B.BU2_Key = 'XWT'
LIMIT 20
我有一个视图(v_Case),我正试图连接到另外两个表,以便从每个表中查找一个值。上面的查询返回除最后一列之外的所有内容的相同数据(见下文)。这就像是在迭代最后一列以提取唯一的条目,有点像“groupby”子句。应该发生的是,我为该记录获取了具有特定“BusinessUnit”和“ModelNumber”的唯一行
DUMEPRINT 5/2/2014 8:56:27 AM 3002845327 JJT Product 1
DUMEPRINT 5/2/2014 8:56:27 AM 3002845327 JJT Product 2
DUMEPRINT 5/2/2014 8:56:27 AM 3002845327 JJT Product 3
DUMEPRINT 5/2/2014 8:56:27 AM 3002845327 JJT Product 4
我根据这篇文章为我的解决方案建模:
我做错了什么
感谢您提供的任何帮助。数据问题。故障排除的一般规则这些是每个记录的不同列(在本例中,C.product\U number\U desc as ModelNumber)通常是问题将要出现的地方…以及我为什么向您指出dim\U产品 如果您收到重复项,下面的查询将有助于确定此表是否为您提供了问题。请记住,此语句中的键可以是多个字段…无论您在什么位置加入表:
Select key,count(1) from table group by key having count(1)>1
未来的其他选项…不要假设这是您的代码,像这样的重复项几乎总是指向脏数据(另一个选项是由于键不正确而导致交叉连接)。如果您注释掉“c”表和select子句中引用的列,您将收到一行…因此您的副本来自此处的“c”表
祝你好运+1问得好。不过,这看起来是数据驱动的,这有助于解决问题,而不是真正的答案。C.产品线代码似乎有重复项。。。按计数(1)>1的产品线代码从参考数据中选择产品线代码、计数(1)。那里的代码将通过product_line_代码来判断dim_product表中是否存在重复项…如果您得到0个结果,则表是干净的…超过1个结果将表明此连接是重复项出现的地方,并显示导致此问题的product_line_代码。RE:12这确实是问题所在。“DIM_PRODUCT”表不是一个真正的查找表-在那里,到处都是重复的条目。哈哈!我想我现在找到了正确的表格(有数百张表格),而且这些东西似乎在工作——至少目前是这样。谢谢你给我指出了正确的方向。我将把评论变成一个答案……我从几年的桌面支持中了解到,代码和系统的功能与它们应该的一样,但脏数据或用户试图做系统不打算做的事情是问题的根本原因。如果确定联接良好,请检查数据是否存在重复项。