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

Откуда:
Сообщений: 182
Вполне просто для понимания человека запрос, но как его реализовать на MS SQL:
SELECT FACT.N, TEMP.Maximum - FACT.Q AS REST
FROM FACT INNER JOIN
(SELECT MAX(FACT) AS MAXIMUM
FROM FACT AS F
WHERE F.N > FACT.N) AS TEMP
Суть запроса, допустим таблица FACT следующая:
N Q
1 6
2 3
3 6
4 5
5 5
6 7
7 7
8 4
9 6
10 5
Результат должен быть следующим:
1 1
2 4
3 1
4 2
5 2
6 0
7 0
8 2
9 0
10 0
Как объяснить MS SQL 2005 Server что от него хочу?
24 ноя 09, 14:54    [7970974]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36799
И кто тот человек, которому просто понять, что вы тут понаписали?

Сообщение было отредактировано: 24 ноя 09, 14:56
24 ноя 09, 14:56    [7970997]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
SELECT F1.N, MAX(F.N) - F1.Q AS REST
FROM FACT F1 INNER JOIN
FROM FACT AS F
ON  F.N > F1.N
group by F1.N, F1.Q

для спящего время бодрствования равносильно сну
24 ноя 09, 15:01    [7971046]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
iljy
Member

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

так?
SELECT f.N,  case when TEMP.Maximum > f.Q then TEMP.Maximum - f.Q else 0 end AS REST
FROM FACT f cross apply
	(SELECT MAX(Q) AS MAXIMUM
	 FROM FACT
	 WHERE N > F.N) AS TEMP
данные надо в виде скриптов выкладывать, так что не проверял.
24 ноя 09, 15:02    [7971053]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить