如何选择子集中至少有两个相同值的所有行

时间:2015-05-22 15:06:06

标签: sql sql-server

SQL的新功能对我来说很难。例如,我有一个包含两列的表。

page_session_id, event_name

假设我想选择至少有两个event_name ='已启动的所有行。在同一个page_session_id

2 个答案:

答案 0 :(得分:1)

如果您有多行并想要从表中获取所有列,则可以使用此

;with cte as (
   select
       *,
       count(*) over(partition by page_session_id) as cnt
   from <table>
   where event_name = 'started'
)
select *
from cte
where cnt > 1

答案 1 :(得分:1)

HAVING的一种方式:

select 
    page_session_id, event_name
from tbl 
where event_name = 'started'
group by page_session_id, event_name
having count(*) >= 2