Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
Dima_Tr_
Member

Откуда:
Сообщений: 20
Доброго времени суток.
Есть следующего вида таблица:
Картинка с другого сайта.

Подскажите пожалуйста как выбрать из нее строки, где finish_date совпадают, а start_date меньше?
27 июл 11, 12:47    [11033318]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Dima_Tr_, меньше кого? Какой должен быть результат на вашей выборке?
27 июл 11, 12:52    [11033359]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Dima_Tr_
Member

Откуда:
Сообщений: 20
В качестве результата должны остаться следующие строчки
2,
3,
4,
5,
6,
7,
9,
11
Т.е. Из двух строк, где совпадают finish_date нужно выбрать ту, где start_date меньше
27 июл 11, 12:57    [11033409]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
yado4eg
Member

Откуда:
Сообщений: 202
Dima_Tr_,

select f.*
from
(
select j.*, row_number() over(partition by j.[r]  order by j.start_date ASC) as [rn]
from
(
select
  t.TimeDiff, t.start_date, t.finish_date,
  rank() over(order by finish_date) as [r]  -- maybe dance_rank .. 
from table t ) j ) f

where f.[rn] = 1

извини не проверял.
27 июл 11, 13:08    [11033528]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Dima_Tr_
Member

Откуда:
Сообщений: 20
yado4eg
Dima_Tr_,

select f.*
from
(
select j.*, row_number() over(partition by j.[r]  order by j.start_date ASC) as [rn]
from
(
select
  t.TimeDiff, t.start_date, t.finish_date,
  rank() over(order by finish_date) as [r]  -- maybe dance_rank .. 
from table t ) j ) f

where f.[rn] = 1

извини не проверял.


Спасибо работает.
27 июл 11, 13:20    [11033637]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Elena_HB
Member

Откуда:
Сообщений: 6
а можно и так

select t1.* from dt_date t1
inner join
(select min(timeDiff) as timeDiff,finish_date from dt_date
group by finish_date) t2 ON t1.finish_date=t2.finish_date and t1.timeDiff=t2.timeDiff
27 июл 11, 13:31    [11033734]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Raoul
Member

Откуда:
Сообщений: 177
;
with t as (
    select TimeDiff, start_date, finish_date,
        row_number() over (partition by finish_date order by start_date) as pos
)
select * from t where pos=1
27 июл 11, 13:32    [11033743]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Raoul
Member

Откуда:
Сообщений: 177
под строкой с row_number(), конечно же, строка
    from mytable
27 июл 11, 13:34    [11033750]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
NETClient
Member

Откуда:
Сообщений: 461
yado4eg
dance

Клаббер?
27 июл 11, 13:42    [11033835]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
yado4eg
Member

Откуда:
Сообщений: 202
NETClient,

* DENSE

да я такой )) особенно с бубнами))
27 июл 11, 13:52    [11033933]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить