如果我的行话已关闭,请原谅我。我还在学习!根据多列查找具有不同ID的重复行
我刚开始使用Teradata,说实话一直很有趣。然而,我遇到了一段让我难倒了一段时间的路障。
我成功地选择一个表从看起来像一个数据库:
ID service date name
1 service1 1/5/15 john
2 service2 1/7/15 steve
3 service3 1/8/15 lola
4 service4 1/3/15 joan
5 service5 1/5/15 fred
6 service3 1/3/15 joan
7 service5 1/8/15 oscar
现在我想再次搜索数据库找到任何重复的ID(例如:看是否服务service1的日期为1/5/15,名称为john,存在于具有不同ID的另一行上。)
起初,我做了这样的事情:
SELECT ID, service, date, name
FROM table
WHERE table.service = ANY(service1, service2, service3, service4, service5, service3, service5)
AND table.date = ANY('1/5/15', '1/7/15, '1/8/15', '1/3/15', '1/5/15', '1/3/15', '1/8/15')
AND table.name = ANY('john', 'steve', 'lola', 'joan', 'fred', 'joan', 'oscar');
但是,这给了我比我想要的更多的行。
例如:
ID service date name
92 service3 1/8/15 steve
是对我没有用的,因为我要寻找的是有服务,日期和名称的任何在上表中的其他ID的相同的组合标识。
像这样将有利于:
ID service date name
609 service3 1/8/15 lola
,因为它比ID 3.
我很好奇,看看它是可以治疗的三列(服务,日期,名称相匹配)作为一个矢量,也许选择那些匹配它的行?
前
......
WHERE (table.service, table.date, table.name) = ANY((service3,1/8/15,lola), (service1, 1/5/15, john), ...etc)
我的Teradata被降权了,所以我还没有尝试上面的例子。尽管如此,任何想法/反馈都非常感谢!
从哪里来预计输出中'609'的ID值? –
上表不是我的实际表格;它看起来像它,所以我没有泄露任何机密信息。但无论哪种方式,我正在寻找的这些重复项是很大数量行的一小部分;我不知道有多少行,我只知道我无法加载它们 – Sam
我在下面给了你一个答案,试试看,如果它不起作用,请发表评论。 –