выбор строк, одинаковых в одном столбце, но разных в другом - PullRequest
17 голосов
/ 07 марта 2012
X    Y    DATE
1    20   20120101
1    21   20120101
2    30   20120201
3    40   20120201
3    41   20120301

Я хочу выбрать любые строки, у которых есть другая строка, где X совпадает, но дата отличается, т.е. ответ будет

3    40   20120201
3    41   20120301

Ответы [ 3 ]

22 голосов
/ 07 марта 2012

Попробуйте это ...

SELECT *
FROM YourTable
WHERE X IN (
  SELECT T1.X
  FROM YourTable T1 INNER JOIN
       YourTable T2 ON T1.X = T2.X
  WHERE T1.DATE <> T2.DATE
);

Это должно работать в большинстве ANSI-совместимых продуктов баз данных.

2 голосов
/ 07 марта 2012
select distinct t1.*
  from table t1
  join table t2
    on (t1.X = t2.X and t1.date <> t2.date);
0 голосов
/ 08 марта 2012
declare @t table(X int, Y int, DATE CHAR(8))
insert @t values
(1, 20, '20120101' ),
(1, 21, '20120101' ),
(2, 30, '20120201'),
(3, 40, '20120201'),
(3, 41, '20120301')

select x,y, date, maxy, miny from
(
  select *, max(date) over (partition by x) maxdate, 
  min(date) over (partition by x) mindate
  from @t
) a
where mindate <> maxdate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...