|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 2
|
|
Обращение к предыдущей записи в таблице15.07.2013, 19:27. Показов 2335. Ответов 3
Метки нет (Все метки)
Всем привет.
Есть бд со следующими таблицами: Кликните здесь для просмотра всего текста
Customer - справочник клиентов
CustID: Уникальный идентификатор клиента CustName: Название клиента Accounts: - Справочник счетов клиентов AccountID: Уникальный идентификатор счета CustId: Уникальный идентификатор клиента Account: Номер счета Rests: Остатки по счетам за даты (Если за дату остаток не менялся – то запись отсутствует) CustID: Уникальный идентификатор клиента AccountID: Уникальный идентификатор счета Date: Дата остатка Rest: - Исходящий остаток на дату (Кредитовый – ‘+’ – Дебетовый –‘-’) Document: Документы DocID: Уникальный идентификатор документа Narrative: Наименование DocDetails: - Детали документов DocID: Уникальный идентификатор документа CustID: Уникальный идентификатор клиента AccountID: Уникальный идентификатор счета Date: Дата операции DebitCredit: признак - Дебет/Кредит (‘D’ – Дебет – ‘C’ – Кредит) Sum: Сумма Задача стоит следующая: нужно вывести всех клиентов, у которых входящий остаток не совпадает с операциями за день. Входящий остаток - это последняя запись исходящего остатка за прошлый день. Не совпадение входящего и операций за день подразумевает, что система где-то накосячила. К примеру у нас входящий остаток 100, сумма всех операций за день составила -45, а исходящий за день оказался 50. 5 куда-то делось. Проблема в том, что в таблице rest нету столбца со значением порядкового номера строки, что в разы бы облегчило обращение к предыдущей записи по отношению к "текущей" (или требуемой). Как можно осуществить обращение к предыдущей записи для дальнейшего сравнения с суммой операций? Другие решение тоже приветствуются ![]() Заранее спасибо. Добавлено через 43 минуты upd Я тут подумал и понял, что исходящий остаток обновляется как только совершается новая операция и поэтому использовать предыдущую запись для требуемой задачи - не вариант. Нужно использовать последнюю запись за предыдущий день и последнюю запись за текущий день.
0
|
|
| 15.07.2013, 19:27 | |
|
Ответы с готовыми решениями:
3
Запрос (обращение к предыдущей строке) |
|
76 / 62 / 24
Регистрация: 21.06.2013
Сообщений: 330
|
|
| 15.07.2013, 22:50 | |
|
Просто для информации. В SQL СУБД записи в таблице хранятся в произвольном порядке, поэтому нет такого понятия как "предыдущая запись" если у записей в таблице нет какого-либо ключевого поля, по которому можно отличить предыдущую запись от текущей.
В документации даже пишут, что если выполнить два раза SELECT * FROM table; то СУБД не гарантирует, что оба раза порядок выдаваемых записей будет одинаковым.
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 2
|
|||||||
| 15.07.2013, 23:09 [ТС] | |||||||
|
Тогда какие предложения есть? Подробнее распишу принцип: У клиента есть деньги на счету. К примеру в понедельник он ничего с ними не делал, а во вторник и среду - тратил. Запись rest в таблице rests показывает исходящий остаток (т.е. сколько средств есть на данный момент), каждое изменение баланса фиксируется и заносится в табличку (т.е. можно сказать, что date в таблице rests = date в таблице DocDetails). Требуется вывести входящий остаток (коим является последняя исходящая запись), который не соответствует обороту за день. Опять на примере легче показать. В понедельник у клиента было 100 рублей, во вторник он не тратил ничего, в среду потратил 20 рублей. Т.е. к четвергу, его входящий остаток составил 80 рублей. В четверг он еще раз потратил 20 и отдельно 5. Исходящий на четверг должен составить 55 рублей. На деле же составил 50 (это пример моделирует сбои, которые действительно имеют место быть). Т.е. требуется вывести всех клиентов, которые имеют не стыковки следующего рода: 80-20-5=55, но система показывает 50 (50+20+5=75). Каждая операция имеет дату (как rest так и в DocDetails). И я сделал такую вот фигню:
0
|
|||||||
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
| 16.07.2013, 11:19 | |
|
решение существенно зависит от версии sql-сервера
0
|
|
| 16.07.2013, 11:19 | |
|
Помогаю со студенческими работами здесь
4
Обратиться к предыдущей записи Значение предыдущей записи +1
Вывод в поле предыдущей записи таблицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|