T-SQL различает одну и ту же таблицу и выбирает несколько столбцов и идентификаторы> 5 - PullRequest
0 голосов
/ 26 сентября 2018

Во-первых, спасибо за ваше время и вашу помощь!

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 голосов
/ 26 сентября 2018

Я не мог точно понять, что вы имеете в виду, но с точки зрения различий, вы можете рассмотреть такой запрос:

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

PS Я не имею никакого представления ологика для описания столбца.

0 голосов
/ 26 сентября 2018

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...