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

Откуда:
Сообщений: 7
Всем привет.

Нужна помощь. Задача:
Есть 2 вх параметра - 1. Количество; 2. 1 (первые) или 0 (последн);
Вывести N количество первых поступлений на склад если = 1 или если =0 последних N количество поступлений.
Поле дата присутствует.

Спасибо.
2 окт 15, 11:28    [18225179]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в создании запроса  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
carik,

оборачивайте запрос в динамику и делайте case @parameter when 1 then 'asc' else 'desc' end
2 окт 15, 11:55    [18225376]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в создании запроса  [new]
zero_air
Member

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

Иии ? данные то какие ? все должны угадать что вы имели ввиду :)
И что в вашем понимании первые или последние поступления ?
Версия сервера ?

Вообщем как вариант , если конечно я угадал что вам нужно
create table #t(id int, tmp1 varchar(10), tmp2 int)

insert #t(id, tmp1, tmp2) values(1, 'arrival1',2)
insert #t(id, tmp1, tmp2) values(2, 'arrival2',44)
insert #t(id, tmp1, tmp2) values(3, 'arrival3',6)
insert #t(id, tmp1, tmp2) values(4, 'arrival4',18)
insert #t(id, tmp1, tmp2) values(5, 'arrival5',8)
insert #t(id, tmp1, tmp2) values(6, 'arrival6',4)

declare @param1 int, @param2 int
set @param1 = 2 
set @param2 = 0


;WITH CTE AS
(
  SELECT id, tmp1, tmp2 , ROW_NUMBER() OVER (ORDER BY case when @param2 =0 then id else -id end) AS RowNum
  FROM #t
)
SELECT tmp1, tmp2, id
FROM CTE
WHERE RowNum BETWEEN 0 AND @param1
ORDER BY 
RowNum

drop table #t 
2 окт 15, 11:56    [18225387]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в создании запроса  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
Ну можно и без динамики...
SELECT TOP @n *
FROM [таблица]
ORDER BY CASE @parameter
         WHEN 0 THEN -CAST([дата] AS FLOAT)
         WHEN 1 THEN CAST([дата] AS FLOAT)
         ELSE RAND()
         END
2 окт 15, 12:07    [18225469]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в создании запроса  [new]
carik
Member

Откуда:
Сообщений: 7
всем спасибо.
closed
2 окт 15, 12:44    [18225790]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить