-2

原文:
(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'

如何设置这个查询更短?

4

2 回答 2

0

您可以对 C2 进行分组和计数,并在计数大于 1 个时选择单个 c2(如 A,2,R0 )没有出现 a,1,RO 和 a,1,r1 显示为您的结果

于 2013-10-23T08:34:33.360 回答
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

于 2013-10-23T08:34:40.430 回答