Одинаковые значения

Demer
Дата: 08.06.2011 14:49:12
Всю голову сломал - не понимаю как сделать (возможно переработал )) )
Есть такая таблица:
автор
Column1 | Column2
---------------------
1 | Москва
1 | Москва
2 | Москва
2 | Тверь
3 | Москва
4 | Тверь
5 | Тверь

Нужно составить запрос, который вернет следующую таблицу:
автор
Column1 | Column2
---------------------
2 | Москва
2 | Тверь


Т.е. с одинаковыми Column1 и разными Column2
yado4eg
Дата: 08.06.2011 14:52:15
Demer,

а по какому принципу формируется Column1 ? или там просто '2' поставить ? :)
invm
Дата: 08.06.2011 14:54:48
select column1 from Таблица group by column1 having count(distinct column2) > 1
Остальное доработаете сами.
1
Дата: 08.06.2011 14:58:23
select t3.col1, t3.col2
from (select col1
from (select distinct col1,col2 from tbl) t1
group by col1 having count(col1)>1) t2
inner join tbl t3 on t2.col1=t3.col1
1
Дата: 08.06.2011 15:01:16
ну и как для случая col1=1, col2='v' ; col1=1, col2=NULL ?
ё
Дата: 08.06.2011 15:01:46
select * from @t t1
where (select count(distinct t2.Column2) from @t t2 where t2.Column1=t1.Column1) > 1
AmKad
Дата: 08.06.2011 15:21:40
with s as
(select 1 id, 'Москва' t union all
 select 1 id, 'Москва' t union all
 select 2 id, 'Москва' t union all
 select 2 id, 'Тверь'  t union all
 select 3 id, 'Москва' t union all
 select 4 id, 'Тверь'  t union all
 select 5 id, 'Тверь'  t
)
select id, t
from
  (select id, t, max(dr) over (partition by id) mx
   from
     (select s.*, dense_rank() over (partition by id order by t) dr
      from s
     ) s
  )s   
where mx > 1;
Demer
Дата: 08.06.2011 15:22:59
Спасибо за помощь, но ни один из вариантов не подходит (ближе всех был invm)
Вот что я хотел увидеть:


select  t1.Column1,  t2.Column2
from  (
		select Column1
		from tbl 
		group by Column1
		having count(distinct Column2) > 1 
) t1
left join (
		select Column1, Column2
		from tbl 
		group by Column1, Column2
) t2 
on t1.Column1=t2.Column1
ё
Дата: 08.06.2011 15:27:54
Demer
Спасибо за помощь, но ни один из вариантов не подходит (ближе всех был invm)
Вот что я хотел увидеть:


select  t1.Column1,  t2.Column2
from  (
		select Column1
		from tbl 
		group by Column1
		having count(distinct Column2) > 1 
) t1
left join (
		select Column1, Column2
		from tbl 
		group by Column1, Column2
) t2 
on t1.Column1=t2.Column1

...и нахера тут может быть нужен left join ???

declare @t table (Column1 int, Column2 varchar(10))

insert into @t

select 1 , 'Москва' union all
select 1 , 'Москва' union all
select 2 , 'Москва' union all
select 2 , 'Тверь' union all
select 3 , 'Москва' union all
select 4 , 'Тверь' union all
select 5 , 'Тверь'

--

select * from @t t1
where (select count(distinct t2.Column2) from @t t2 where t2.Column1=t1.Column1) > 1

-- select column1 from @t group by column1 having count(distinct column2) > 1

select  t1.Column1,  t2.Column2
from  (
		select Column1
		from @t 
		group by Column1
		having count(distinct Column2) > 1 
) t1
left join (
		select Column1, Column2
		from @t 
		group by Column1, Column2
) t2 
on t1.Column1=t2.Column1

(7 row(s) affected)

Column1     Column2    
----------- ---------- 
2           Москва
2           Тверь

(2 row(s) affected)

Column1     Column2    
----------- ---------- 
2           Москва
2           Тверь

(2 row(s) affected)

???
Demer
Дата: 08.06.2011 15:43:03
ё,

Думаю здесь вина моя - неправильный пример привел.
Привожу другой:


Column1 | Column2
---------------------
1 | Омск
1 | Москва
2 | Москва
2 | Тверь
3 | Москва
4 | Мурманск
5 | Тверь
6 | Сочи
7 | Анапа
6 | Вологда

Результат должен быть такой:

Column1 | Column2
---------------------

2 | Москва
2 | Тверь
6 | Сочи
6 | Вологда