原件:
(C1,C2,C3)
(A,1,R0)
(A,1,R1)
(A,2,R0)
(A,3,R0)
(A,3,R1)
(A,4,R0)
(A,5,R0)
(B,1,R0)
结果:
(C1,C2,C3)
(A,1,R0)
(A,1,R1)
(A,3,R0)
(A,3,R1)
试图显示一个表格,人们可以将数据与相同的“C2”但不同的“C3”进行比较
我尝试使用自己的内部联接
select * from myTable a inner join myTable b on a.C2 = b.C2 and b.C3 = 'R1' and b.C1 = 'A' and a.C1 = 'A'
如何缩短此查询的时间?
答案 0 :(得分:0)
你可以分组&计数C2并在计数大于1时选择 单个c2(如A,2,R0)不会出现 a,1,RO和a,1,r1显示为您的结果
答案 1 :(得分:0)
如果输出中的行B, 1 ,R0
是拼写错误,那么您可以使用窗口函数count()来获得所需的输出:
with cte as (
select *, count(*) over(partition by C1, C2) as cnt
from Table1
)
select C1, C2, C3
from cte
where cnt > 1
<强> sql fiddle demo 强>