选择是在一列同一行,但不同的另一
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
尝试......
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标准的数据库产品的工作。
select distinct t1.*
from table t1
join table t2
on (t1.X = t2.X and t1.date <> t2.date);
@Yuck我没有机会测试它,但你确定吗?在我看来,这个查询应该给出所需的结果。 – 2012-03-07 19:53:53
@Yuck我测试了它,它工作正常。 – 2012-03-07 20:13:38
'table'是一个SQL关键字,它会阻止它运行。你真的跑什么来测试?哪个RDBMS? – Yuck 2012-03-07 20:20:18
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
的数据库和版本? – 2012-03-07 20:07:42
Microsoft SQL Server 2008(SP1) - 10.0.2531.0(X64)Mar 29 2009 10:11:52 Copyright(c)1988-2008 Windows NT 6.0(Build 6002:Service Pack 2)上的Microsoft Corporation Developer Edition(64位) )....为什么? – gmaximus 2012-03-07 20:16:03
因为我的sql只能从sqlserver 2008+工作。 – 2012-03-07 20:25:06