сгенерировать SQL-запрос для следующего вывода - PullRequest
1 голос
/ 17 мая 2011

У меня есть стол account(ID,TransDate,amount,isDebit,balance). Очевидно, это упрощенная версия моего стола для ясности. TransDate - это дата, на которую будет сделана запись, isDebit - логическое значение, указывающее, является ли эта транзакция ДЕБЕТОМ или КРЕДИТОМ.

A, когда новая запись сделана, она может иметь transDate старше, чем последняя сделанная запись, поэтому я должен расположить ее в нужном месте и изменить баланс всех строк, которые будут ниже этой позиции. Там я сортирую строки по transDate ASC, по идентификатору ASC, что дает мне правильный порядок записей.

Баланс будет сгенерирован путем добавления текущей суммы к предыдущему последнему идентификатору остатка баланса и вычитается, если текущая запись - КРЕДИТ.

Имеются следующие 5 последних записей sorted by transDate ASC , ID ASC:

счет (ID, TransDate, сумма, isDebit, баланс) в качестве примера

41 | 2011-04-10 | 1000 | 1 | 1000      // as this is the first entry  but not always 

37 | 2011-05-14 | 7500 | 1 | 8500

39 | 2011-05-14 | 6500 | 0 | 2000

46 | 2011-05-15 | 1000 | 1 | 3000

Может ли кто-нибудь сгенерировать запрос (ы):

Создать новую запись со следующими данными: <ID auto> | 2011-05-9 | 1000 | 1 | <balance>

запрос должен найти, что новая позиция записи находится после строки с идентификатором 41 и перед идентификатором строки 37. и также извлекает строки из Id 41 (, поскольку баланс этой строки будет использоваться для вычисления баланса для новая строка ) и below, в которой я устанавливаю новые исправленные сальдо.

Или предложите новый метод для реализации этого вида "учета в бухгалтерской книге".

1 Ответ

0 голосов
/ 17 мая 2011

К сожалению, MySQL не поддерживает оконные функции, но вы, возможно, сможете найти решение из этого предыдущего ответа, включающего хранимые процедуры, поскольку поддержка оконных функций SQL Server слишком ограничена и для этого типа запроса: Рассчитать промежуточную сумму в SQL Server

...