我需要在同一个表格中为多个帐户的三行比较同一列,我该怎么做?
示例:让我们来一张桌子"帐户"
Accountno. Name. Date
01. A. 01/03/2018
01. B. 01/03/2018
01. C 01/03/2018
02. A. 01/05/2018
02. B. 01/05/2018
02. C 01/03/2018
我的查询应该将输出作为帐户02提供,因为它在行A,B,C的日期中不匹配,并且应该忽略帐户01。
基本上,如果不匹配,则应打印帐户,否则请忽略并继续。
答案 0 :(得分:0)
由于OP没有指定,下面的DBMS只是一个使用子查询和聚合的简单示例。
要查找不匹配日期,只需按帐号获取最大值和最小值。因此,您可以轻松切断没有日期不匹配的帐户。
(在T-SQL中运行)
create table dbo.[Account]
(
[Accountno] int not null,
[Name] varchar(100) not null,
[Date] date not null
)
GO
insert into dbo.[Account]
([Accountno], [Name], [Date])
values
(01, 'A.', '01/03/2018')
,(01, 'B.', '01/03/2018')
,(01, 'C' , '01/03/2018')
,(02, 'A.', '01/05/2018')
,(02, 'B.', '01/05/2018')
,(02, 'C', '01/03/2018')
GO
select x.Accountno
from
(
select ac.Accountno, MAX(ac.Date) as lastDate, MIN(ac.Date) as firstDate
from dbo.Account ac
group by ac.Accountno
) as x
where x.firstDate != x.lastDate
修改强>
为 Oracle 撰写相同的查询。 小提琴示例http://sqlfiddle.com/#!4/e96181/8
select x.Accountno
from
(
select ac.Accountno, MAX(ac.MyDate) as lastDate, MIN(ac.MyDate) as firstDate
from Account ac
group by ac.Accountno
) x
where x.firstDate != x.lastDate
(在Oracle 11g上运行)
答案 1 :(得分:0)
我会这样做:
funkcja <- function(i,k=5)
{
beta <- c(k,k,0,k,k,rep(0,35))
X <- matrix(rnorm(100*40),100,40)
y <- X %*% beta + rnorm(100)
lasso.lars <- lars(X,y,intercept=FALSE,use.Gram=FALSE)
test <- covTest(lasso.lars,X,y,sigma.est=1)
test
}
这是标准SQL,应该可以在任何数据库中使用。
答案 2 :(得分:0)
我只会选择exists
:
select t.*
from table t
where exists (select 1
from table t1
where t1.accountno = t.accountno and
t1.Date <> t.Date
);