SQL для поиска строк, в которых два столбца имеют одинаковое значение - PullRequest
2 голосов
/ 03 апреля 2012

У меня 3 columns в базе данных Oracle с таблицей mytable, и я хочу, чтобы записи имели only duplicate values in 2nd and 3rd column.

SQL> select * from mytable;

column1      column2       column3

  A            50           50----required output
  A            10           20----have different values i.e. 10 and 20
  A            50           50----required output
  A            30           70----have different values i.e. 30 and 70
  B            20           20----required output
  B            40           30----have different values i.e. 40 and 30

Я хочуследующий вывод с count(*):

 column1      column2       column3

  A            50           50
  A            50           50
  B            20           20

Любая помощь очень ценится

Ответы [ 3 ]

4 голосов
/ 03 апреля 2012
select column1, count (*)
from mytable
where column2 = column3
group by column1, column2;
0 голосов
/ 03 апреля 2012

Вот пример примера, я делаю этот SQL Server, но я уверен, что этот запрос также работает в ORACLE. ПРИМЕР:

Create table #Test (colA int not null, colB int not null, colC int not null, id int not null identity) on [Primary]
GO
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)

INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)

INSERT INTO #Test (colA,colB,colC) VALUES (4,5,6)
GO
Select * from #Test
GO

select count(colA) as tot_duplicate_count , colA ,colB ,colC  from #Test where id <=
(Select Max(id) from #Test t where #Test.colA = t.colA and
#Test.colB = t.colB and
#Test.colC = t.colC)
group by colA ,colB ,colC 
having count(colA) > 1

Этот запрос подсчитывает общее количество повторяющихся записей на строку данных

0 голосов
/ 03 апреля 2012

Из вашего вопроса о первичном ключе неясно, так как A в первом столбце повторяется много раз.

Вы можете попробовать следующее:

 select column1, column2, column3, count(*) from 
mytable where column2 = column3 group by column1, column2, column3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...