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

Откуда:
Сообщений: 734
Добрый день!
Давненько не кодил, вроде элементарная задача, а не получается написать с минимальным кол-вом SELECTов.

Имеется таблица KOEF.
CREATE TABLE [dbo].[KOEF] (
  [KOEF_ID] int NOT NULL,
  [PDATE] datetime NULL,
  [COEF] numeric(5, 2) NULL
   CONSTRAINT [PK_S_KOEF_DBF] PRIMARY KEY CLUSTERED ([S_KOEF_DBF_ID])
)
ON [PRIMARY]
GO
Первое поле PK, второе поле - дата начала действия коэффициента, третье поле - сам коэффициент.

Нужно на конкретную дату (время не учитывать) получить действующий коэффициент.
например в таблице следующие записи:

1.01.2006 1,3
1.06.2006 1,2
1.04.2009 1,5

Запрос должен выдавать:
10.03.2006 --> 1,3
1.06.2006 --> 1,2
29.04.2005 --> null
12.12.2009 --> 1,5

Как записать в одном SQL запросе?
25 дек 09, 13:43    [8118604]     Ответить | Цитировать Сообщить модератору
 Re: коэффициент в тот период  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT
 K.[PDATE]
,(SELECT TOP(1) KK.[COEF] FROM [dbo].[KOEF] KK WHERE KK.[PDATE]<=K.[PDATE] ORDER BY KK.[PDATE] DESC)K.[PDATE]
FROM [dbo].[KOEF] K
ORDER BY K.[PDATE];
25 дек 09, 13:47    [8118631]     Ответить | Цитировать Сообщить модератору
 Re: коэффициент в тот период  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Опечатка:
iap
SELECT
 K.[PDATE]
,(SELECT TOP(1) KK.[COEF] FROM [dbo].[KOEF] KK WHERE KK.[PDATE]<=K.[PDATE] ORDER BY KK.[PDATE] DESC)[COEF]
FROM [dbo].[KOEF] K
ORDER BY K.[PDATE];
25 дек 09, 13:48    [8118638]     Ответить | Цитировать Сообщить модератору
 Re: коэффициент в тот период  [new]
nerv
Member

Откуда:
Сообщений: 734
спасибо, похоже то, что нужно!
25 дек 09, 14:07    [8118789]     Ответить | Цитировать Сообщить модератору
 Re: коэффициент в тот период  [new]
nerv
Member

Откуда:
Сообщений: 734
только не совсем понял, куда в этот запрос добавить переменную @dat, в качестве входного параметра, чтобы по этой дате выдавать коэффициент
то есть, как я писал
@dat =10.03.2006 --> select выдает 1,3
@dat =1.06.2006 --> select выдает 1,2
@dat =29.04.2005 --> select выдает null
@dat =12.12.2009 --> select выдает 1,5
25 дек 09, 14:20    [8118913]     Ответить | Цитировать Сообщить модератору
 Re: коэффициент в тот период  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
nerv
только не совсем понял, куда в этот запрос добавить переменную @dat, в качестве входного параметра, чтобы по этой дате выдавать коэффициент
то есть, как я писал
@dat =10.03.2006 --> select выдает 1,3
@dat =1.06.2006 --> select выдает 1,2
@dat =29.04.2005 --> select выдает null
@dat =12.12.2009 --> select выдает 1,5
Так что ли?
SELECT TOP(1) [COEF]
FROM [dbo].[KOEF]
WHERE [PDATE]<=@dat
ORDER BY [PDATE] DESC;
25 дек 09, 14:28    [8118988]     Ответить | Цитировать Сообщить модератору
 Re: коэффициент в тот период  [new]
nerv
Member

Откуда:
Сообщений: 734
все элементарно оказалось, спасибо еще раз
25 дек 09, 14:38    [8119091]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить