T-SQL不同的相同选项卡,然后选择“多列和标识长度> 5”

时间:2018-09-26 08:17:25

标签: sql sql-server tsql

首先,感谢您的宝贵时间和帮助!

EventId       UserId         Description

---------------------------------------

2525123547     2     lorem lorem lorem  ghfgh    
2525123547     2     saddsadddasdsdsdsddsasd      
2525123547     5     saddsadddasdsdsdsddsasdgfghfhgh   
252            2     saddsadddasdsdsdsddsasd
1454           2     343444434343dffdfdfdfd jfdfjdfj fdjfdj lorem lorem
1522254412     5     dsadadfsffsafasfdsdsdsadsddsaasddd
1555224451     2     sadasdsadasdddsadaddsad
1555224451     2     asdafgewrwerrewrererewrwrerww

我想根据EventId进行不同的操作。我希望看到用户过程的结果如下。还有

EventId的长度必须大于5

For exp  where UserId =2


EventId          UserId     Description
2525123547        2         lorem lorem lorem  ghfgh
1555224451        2         sadasdsadasdddsadaddsad   

2 个答案:

答案 0 :(得分:0)

使用ROW_NUMBER为要返回的行分配1:

with cte as 
 ( select ...
      row_number()
      over (partition by UserId, EventId -- for each user (if UserId removed from WHERE) & Event
            order by whatever_determines_your_result) as rn 
   from tab
   where UserId = 2
     and length(EventId) > 5
 )
select *
from cte 
where rn = 1

答案 1 :(得分:0)

我无法确切理解您的意思,但是从区别的角度来看,您可以考虑这样的查询:

select t2.EventId, t2.UserId, t2.Description 
  from
    (
    select t.*, len(t.Description) as l_desc,
           row_number() over (partition by EventId order by len(t.Description)) as rn
      from tab t
     where UserId =2
       and len(EventId) > 5
     ) t2
  where rn = 2
  order by EventId desc;

EventId     UserId  Description
----------  ------  ------------------------------
2525123547    2     lorem lorem lorem  ghfgh
1555224451    2     asdafgewrwerrewrererewrwrerww

P.S。我对列描述的逻辑一无所知。