我正在尝试编写一个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
有任何帮助吗?谢谢。
答案 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