Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2

Взятие предыдущего значения, если Null

14.11.2019, 12:41. Показов 2398. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Подскажите пожалуйста момент. Есть таблица Quotes (Day date, CurrencyValue money)
Даты в ней уникальны, но они могут идти с разрывами.
Необходимо получить запрос, который выведет по заданному периоду за каждый день значения CurrencyValue.Если за конкретную дату в таблице Quotes нет даты, то взять предшествующую.

Вот я написал такой запросик:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Declare @From date
Declare @To date
set @From = '2018-11-12'
set @To = '2018-11-26'
 
SELECT 
    DayList,
    CurrencyValue,
    LAG(CurrencyValue) OVER ( Order By DayList)
 FROM Quotes Q 
Right JOIN (
    SELECT DATEADD(d, number, @from) DayList 
        FROM numbers
    Where DATEADD(d, number, @from) Between @From AND @To
) t on Q.Day = t.DayList
Order By DayList
В таблице numbers только один столбец, в котором хранятся целые числа от 0.

Такой запрос выдает результат, указанный на скрине.
Как видно, если у нас разрыв только один день, то мы без проблем можем заменить значения Null на предшествующее. Но как сделать, чтобы длина разрыва могла быть переменной?

Заранее спасибо!
Миниатюры
Взятие предыдущего значения, если Null  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2019, 12:41
Ответы с готовыми решениями:

Выбока предыдущего не NULL значения
Все привет скажите возможно ли работая с одной таблице получить для всех NULL значение предыдущее значение из массива не являющееся NULL, и...

Вывести 1 если другое поле не null, 0 если null
Всем доброго времени суток. Никак не могу найти ответ на вопрос в теме. Грубо говоря нужно вывести что-то типа этого: select (if...

Поиск разницы предыдущего значения
Добрый день форумчане!!! нужна ваша помощь!! ситуация такая: имеется таблица, в ней надо найти по номеру квартиры разницу значения...

2
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
14.11.2019, 13:04  [ТС]
Придумал способ без Lag
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
    DayList,
    isnull(CurrencyValue,
        (Select Top 1 qq.CurrencyValue 
         From Quotes qq 
         WHERE qq.Day <= DayList 
         Order By qq.Day DESC)) ShiftCurrency
FROM Quotes Q 
Right JOIN (
    SELECT DATEADD(d, number, @from) DayList 
        FROM numbers
    Where DATEADD(d, number, @from) Between @From AND @To
) t on Q.Day = t.DayList
Order By DayList
Но все таки интересно, можно ли как то иначе? эффективнее
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
15.11.2019, 13:27  [ТС]
Придумал еще такую штуку. Через Max и указания диапазона строк в окне
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT tt.DayList, CurrencyValue FROM Quotes QQ
JOIN (
SELECT 
    t.DayList,
    MAX(Q.Day) Over (Order BY DayList Range Unbounded Preceding) r
FROM Quotes Q 
Right JOIN (
    SELECT DATEADD(d, number, @from) DayList 
        FROM numbers
    Where DATEADD(d, number, @from) Between @From AND @To
) t on Q.Day = t.DayList
) tt on QQ.Day = tt.r
Order By tt.DayList
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2019, 13:27
Помогаю со студенческими работами здесь

Выборка уникального значения, либо (если оно НЕ уникально) - то с NULL-левым полем
Всем привет. Есть таблица: CREATE TABLE tbl ( id INTEGER PRIMARY KEY, title varchar(40) NOT NULL, fld ...

Взятие значения поля input
Всем привет. Подскажите, пожалуйста. У меня есть 2 формы на одной странице, которые имеют следующий вид: Форма 1: &lt;div...

Взятие выбранного значения из DropDownList
Здравствуйте! Почему какое бы значение я не выбрал в DropDownList извлекается то, что было установлено 1-ым при загрузки страницы? ...

Вывести индексы тех элементов, значения которых больше значения предыдущего
Прошу,помогите решить ) Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Вывести индексы тех элементов,...

Подсчитать количество элементов массива, значения которых больше значения предыдущего элемента
Подсчитать кол-во элементов значения которых больше значения предыдущего элемента? Срочно нужно! Заранее большое спасибо)*


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru