我正在使用SQL Server Management Studio2012。
很抱歉您可能会误导标题,不确定该怎么称呼。
我需要锻炼如何找到仅动员了一个人的事件。我想我可以通过使用Row_Number分区然后在1上过滤
来实现此目的。 RowNumber Incident MobilisedDateTime Name
1 abc 2019-02-08 Fred
2 abc 2019-02-08 Roger
3 abc 2019-02-08 Brian
4 abc 2019-02-08 John
1 def 2019-02-08 Joe
1 ghi 2019-02-07 Robert
1 jkl 2019-02-06 Jimmy
2 jkl 2019-02-06 John
这是在对第1行进行过滤时发生的事情。这不是我要的,因为事件'abc'和'jkl'的动员者不止一个。
RowNumber Incident MobilisedDateTime Name
1 abc 2019-02-08 Fred
1 def 2019-02-08 Joe
1 ghi 2019-02-07 Robert
1 jkl 2019-02-06 Jimmy
我想看到的结果是
RowNumber Incident MobilisedDateTime Name
1 def 2019-02-08 Joe
1 ghi 2019-02-07 Robert
答案 0 :(得分:0)
最好的方法可能是my $match = $variable =~ /(*pattern*).*/ ? $1 : *defaultValue*;
。不需要窗口功能:
not exists
为了提高性能,您希望在select t.*
from t
where not exists (select 1
from t t2
where t2.incident = t.incident and
t2.name <> t.name
);
上建立索引。
答案 1 :(得分:0)
您可以尝试此查询,这将返回您的结果
select RowNumber,Incident,MobilisedDateTime,max(Name) as name,count(distinct name) as cnt from table_name group by RowNumber,Incident,MobilisedDateTime having(count(distinct name) = 1)