ColA ColB ColC ColD
data1 rata1 T Test1
data1 rata3 F Test2
data1 rata2 T Test1
data2 rata1 T Test1
data2 rata3 T Test1
data3 rata4 T Test1
有四列Varchar类型。我想确定的是ColB的每个唯一值(rata1,rata2等),找到ColA和其他两列(ColC,ColD)的相应值,其中ColA的特定值出现0或1次。例如 - 对于rata1,data1和data2出现一次,因此输出将包括下面显示的列以及其他不同ColB值的列。
data1 rata1 T Test1
data2 rata1 T Test1
如果有人可以提供任何建议,我们将非常感激。
答案 0 :(得分:2)
我认为以下查询将实现您的目标。
With MyQuery as
(
select ColA, ColB
from MyTable
group by ColA, ColB
having count(*) <= 1
)
select ColA, ColB, ColC, ColD
from MyTable t inner join MyQuery q on t.ColB = q.ColB and t.ColA = q.ColA
编辑以包含John C在评论中提供的修改。
With MyQuery as
(
select ColB
from MyTable
group by ColB
having count(ColA) <= 1
)
select ColA, ColB, ColC, ColD
from MyTable t inner join MyQuery q on t.ColA = q.ColA
答案 1 :(得分:2)
我从你那里得到的问题是你想要不同的ColB值,然后想要ColA,ColC和ColD对应于那个ColB值。 如果是这种情况,您不必混淆自己,只需按ColB订购。
所以查询是
select * from TableA o left outer join
(select distinct ColA,ColB from TableA t)
on o.ColA = t.ColA and o.ColB = t.ColB
group by o.ColA having count(*) <= 1
答案 2 :(得分:1)
With MyQuery as (select ColB from MyTable group by ColB having count(ColA) <= 1) select
t.ColB, ColA, ColC, ColD from MyTable t inner join MyQuery q on t.ColB = q.ColB