Oracle запрос для получения желаемого результата - PullRequest
0 голосов
/ 09 июля 2011

ColA ColB ColC ColDdata1 rata1 T Test1data1 rata3 F Test2data1 rata2 T Test1data2 rata1 T Test1data2 rata3 T Test1data3 rata4 T Test1

Есть четыре столбца типа Varchar.Я хочу определить, для каждого уникального значения ColB (rata1, rata2 и т. Д.) Найти соответствующее значение ColA и двух других столбцов (ColC, ColD), где это конкретное значение ColA встречается 0 или 1 раз.Например, для rata1, data1 и data2 происходят один раз, поэтому выходные данные будут включать столбцы, показанные ниже, в дополнение к другим столбцам для других отдельных значений ColB.рекомендации примерно одинаковые.

Ответы [ 3 ]

2 голосов
/ 09 июля 2011

что я понимаю из вашего вопроса, так это то, что вам нужны разные значения 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 голосов
/ 09 июля 2011

Я думаю, что приведенный ниже запрос выполнит то, что вы хотите.

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


Отредактируйте, чтобы включить в комментарии изменения, предоставленные Джоном С.


1 голос
/ 09 июля 2011
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
...