SQL Case语句,引用同一行中的不同列

时间:2014-02-28 06:12:56

标签: sql

我正在尝试编写一个select语句,用于识别客户是否在过去3个月内多次注册,同时仍然提供我正在使用的表中的所有数据(示例如下)

我正在成像案例查询应该看起来像这样,但我不知道如何引用我希望结果填充的行:

case when name in
(select name
from table1
where count(name from this row) > 1
and count(email from this row) > 1
and (date from this row) >= getdate()-120
end

表有3个列:

name, email, date

有任何帮助吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果您的数据库是SQL Server 2005或更高,那么您可以将查询编写为:

create table table1 (name varchar(20), email varchar(50), date datetime);
insert into table1 values ('Name1','email@abc.com',getdate()-30);
insert into table1 values ('Name1','email@abc.com',getdate()-60);
insert into table1 values ('Name1','email@abc.com',getdate());
insert into table1 values ('Name2','email2@abc.com',getdate()-20);
insert into table1 values ('Name3','email3@abc.com',getdate());
insert into table1 values ('Name4','email4@abc.com',getdate()-120);

with CTE as
(
select  
row_number() over (partition by [name],[email] order by [name] asc) as rownum,
[name],
[email],
[date]
from table1
where [date] > = GETDATE() - 120
)   
select * from CTE    
where rownum > = 3