|
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 9
|
|
Присваивание данных предыдущей строки13.04.2019, 11:50. Показов 1267. Ответов 5
Добрый день! Помогите пожалуйста SQL запросом.
Есть таблица "Покупки", поля - "клиент", "дата", "сумма покупки". И Таблица "Скидки" - в ней поля "дата" и "скидка" - в этой таблице хранятся данные о размере скидок, на каждый день КРОМЕ выходных. Нужно вывести "клиент" "дата" и "Сумма покупки со скидкой". Если покупка совершена в выходной день, то скидка считается за предыдущий рабочий. Делал через Left JOIN, но проблема в том, что не знаю как сделать расчет для покупки в выходной день.
0
|
|
| 13.04.2019, 11:50 | |
|
Ответы с готовыми решениями:
5
Присваивание переменной значения из сформированного из строки запроса Учет данных предыдущей строки в следующей |
|
6 / 3 / 3
Регистрация: 13.04.2019
Сообщений: 5
|
||||||||||||||||
| 13.04.2019, 13:01 | ||||||||||||||||
|
1. Имхо, я бы в таком случае заполнял таблицу скидок на все дни, дабы аналитические запросы не усложнять.
2. Простой вариант решения под ваши условия привёл ниже. 3. Было бы полезно, если бы кто-нибудь подсказал более изящное решение (через какой-нибудь хитрый join, например, или через CTE). Т.к. в приведённом ниже решении, если потребуются ещё какие-то поля из таблицы 'discount', или даже если нужно будет просто вывести значение скидки, громоздкий подзапрос придётся копипастить во все необходимые места, а это и дополнительное место для ошибок, и проблемы с рефакторингом и, вероятно, проблемы с производительностью. тестовые таблицы
тестовые данные
корявый вариант решения
0
|
||||||||||||||||
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
||||||
| 13.04.2019, 13:16 | ||||||
|
Оптимизируем и устраняем проблему "если потребуются ещё какие-то поля из таблицы 'discount', или даже если нужно будет просто вывести значение скидки, громоздкий подзапрос придётся копипастить во все необходимые места"
1
|
||||||
|
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 9
|
|
| 13.04.2019, 16:50 [ТС] | |
|
Рассчитывает сумму со всеми скидками. То есть покупка пятницы считается со всеми скидками которые есть в таблице "Скидки"
Добавлено через 4 минуты Извиняюсь, что значит pd?
0
|
|
|
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
|
|||
| 13.04.2019, 19:01 | |||
|
А какой запрос вы написали, нам неведомо.
0
|
|||
|
0 / 0 / 0
Регистрация: 13.04.2019
Сообщений: 9
|
|
| 14.04.2019, 10:59 [ТС] | |
|
Разобрался! Работает, но для покупки в воскресенье выводит NULL, т.к. за субботу скидки нет. Добавил в начало
While dt.<b.dt Begin select b.customer_id, b.dt, b.total, b.total * ((100 - isnull(d.value, pd.value)) / 100) as total_with_discount from buy b left join discount d on d.dt = b.dt outer apply (select top (1) value from discount where d.dt is null and dt < b.dt order by dt desc) pd; End Выдает ошибку - "Не удалось привязать составной идентификатор "Rates.Report_date"." Как можно зациклить?
0
|
|
| 14.04.2019, 10:59 | |
|
Помогаю со студенческими работами здесь
6
Наименьший элемент каждой строки матрицы заменить наибольшим элементом предыдущей строки
Наименьший элемент каждой строки прямоугольной таблицы, замените наибольшим элементом предыдущей строки
Заменить наименьший элемент каждой строки, начиная со второй, наибольшим элементом предыдущей строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|