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

Откуда: Екатеринбург
Сообщений: 158
Есть табличка (ТабНомер int, Остаток float, Месяц smalldatetime)
Приходит @ДатаЗапрашиваемая

Нужно выдать табличку (ТабНомер int, Остаток float), где для каждого ТабНомер выбирется одно только самое близкое значение поля Остаток до указанной даты (т.е. DATEDIFF(month,Месяц,@ДатаЗапрашиваемая)>=0) (в разрезе месяца).
26 апр 13, 09:19    [14233393]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
select top 1 * with ties
from [Есть табличка]
where DATEDIFF(month,Месяц,@ДатаЗапрашиваемая)>=0
order by row_number() over (partiiton by ТабНомер order by Месяц desc)
26 апр 13, 09:24    [14233406]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Knyazev Alexey
>select top 1 with ties *
from [Есть табличка]
where DATEDIFF(month,Месяц,@ДатаЗапрашиваемая)>=0
order by row_number() over (partiiton by ТабНомер order by Месяц desc)
26 апр 13, 09:25    [14233411]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Knyazev Alexey,

Неправильный синтаксис около конструкции "partiiton".
26 апр 13, 09:34    [14233441]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
Денис Б.
Member

Откуда: Екатеринбург
Сообщений: 158
Спасибо.
partiiton -> partition
26 апр 13, 09:39    [14233463]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Денис Б.
Knyazev Alexey,

Неправильный синтаксис около конструкции "partiiton".


без редактора пишу...очепятки!
26 апр 13, 09:57    [14233567]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
cross apply
Guest
Денис Б.
Есть табличка (ТабНомер int, Остаток float, Месяц smalldatetime)
Приходит @ДатаЗапрашиваемая

Нужно выдать табличку (ТабНомер int, Остаток float), где для каждого ТабНомер выбирется одно только самое близкое значение поля Остаток до указанной даты (т.е. DATEDIFF(month,Месяц,@ДатаЗапрашиваемая)>=0) (в разрезе месяца).




если есть (можно сделать)
1. таблица со всеми ТабНомер (назовем ее "таблица_ТабНомер")
2. Индекс (ТабНомер, Месяц desc) на таблице "Есть табличка"

то так

select *
from таблица_ТабНомер t1
cross apply (
  select top 1 Месяц,  Остаток 
  from [Есть табличка] t2
  where t2.ТабНомер  = t1.ТабНомер 
    and t2.Месяц < @ДатаЗапрашиваемая
  order by t2.Месяц 
) t3
26 апр 13, 10:29    [14233759]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать значения с наиболее близкой датой к указанной  [new]
cross apply
Guest
cross apply
Денис Б.
Есть табличка (ТабНомер int, Остаток float, Месяц smalldatetime)
Приходит @ДатаЗапрашиваемая

Нужно выдать табличку (ТабНомер int, Остаток float), где для каждого ТабНомер выбирется одно только самое близкое значение поля Остаток до указанной даты (т.е. DATEDIFF(month,Месяц,@ДатаЗапрашиваемая)>=0) (в разрезе месяца).




если есть (можно сделать)
1. таблица со всеми ТабНомер (назовем ее "таблица_ТабНомер")
2. Индекс (ТабНомер, Месяц desc) на таблице "Есть табличка"

то так

select *
from таблица_ТабНомер t1
cross apply (
  select top 1 Месяц,  Остаток 
  from [Есть табличка] t2
  where t2.ТабНомер  = t1.ТабНомер 
    and t2.Месяц < @ДатаЗапрашиваемая
  order by t2.Месяц DESC
) t3
26 апр 13, 10:36    [14233814]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить