как получить запись баланса last_date, когда мы выбираем DATA by date_range - PullRequest
0 голосов
/ 08 июля 2019

, например:

Если я применяю date_range '16 -May-2019 'для того, чтобы знать balance_Column_Record, то DataGridview должен показывать последнюю запись баланса '15 -May-2019, даже если 15-May-2019 можетУ меня много записей, но просто показывают последнюю запись.

, поэтому первая строка таблицы показывает >> Начальный баланс '5000', а затем примененные данные показывают желаемый результат

Я получил следующий вывод, но я хочу показать вывод с предыдущим значением balance_amount перед выбранным примененным диапазоном date_range

Date            Desc          Dr    Cr  Balance
16-May-19   Service loans    5000   0   5000
17-May-19   Service expanse  3000   0   8000
18-May-19   Loan Deduction   2000   0   10000
19-May-19   Bike Loan         0    5000 5000
20-May-19   Office Expanse    0    2000 3000
21-May-19   Lunch Expanse    8000   0   11000

Я ожидаю вывод, подобный этому,

Date                Desc    Dr      Cr      Balance
15-May-19   Balance  >>>    -       -       8000
16-May-19   Service loans   5000    0       13000
17-May-19   Service expanse 3000    0       16000
18-May-19   Loan Deduction  2000    0       18000
19-May-19   Bike Loan          0    5000    13000
20-May-19   Office Expanse     0    2000    11000
21-May-19   Lunch Expanse   8000     0      19000

Ответы [ 3 ]

0 голосов
/ 08 июля 2019

Какой тип сетки вы используете? DataGridview? Вы можете написать один запрос для предыдущего баланса и вставить одну строку сетки для этого результата, а затем остальные строки сетки с примененными данными.

DataGridView.Rows.Add(row);
0 голосов
/ 08 июля 2019

Это может помочь ...

DECLARE @Temp TABLE
(
  Id INT IDENTITY(1,1),
  [Date] DATE,
  [Desc] VARCHAR(100),
  DR DECIMAL(18,2),
  CR DECIMAL(18,2),
  Balance DECIMAL(18,2)
)
INSERT INTO @Temp(Date,[Desc],DR,CR,Balance) VALUES ('15-May-19','Service loans',1000,0,1000)
INSERT INTO @Temp(Date,[Desc],DR,CR,Balance) VALUES ('15-May-19','Service loans',2000,0,3000)
INSERT INTO @Temp(Date,[Desc],DR,CR,Balance) VALUES ('16-May-19','Service loans',5000,0,8000)
INSERT INTO @Temp(Date,[Desc],DR,CR,Balance) VALUES ('17-May-19','Service loans',3000,0,11000)
INSERT INTO @Temp(Date,[Desc],DR,CR,Balance) VALUES ('18-May-19','Service loans',0,1000,10000)


DECLARE @FromDate DATE = '16-May-19'
DECLARE @ToDate DATE = '18-May-19'

;WITH Lastbalance
AS(
SELECT TOP(1) Date,'Balance  >>>' [Desc],'--'DR,'--'CR,Balance
FROM @Temp
WHERE Date =  dateadd(day,-1, cast(@FromDate as date))
ORDER BY Id DESC 
)
SELECT * FROM Lastbalance
UNION
SELECT Date,[Desc],CAST(DR as VARCHAR(10)) DR,CAST(CR as VARCHAR(10)) CR,Balance
FROM @Temp
WHERE Date >= @FromDate AND Date <= @ToDate

enter image description here

0 голосов
/ 08 июля 2019

Я думаю, вы хотите что-то вроде этого:

select t.*
from (select t.*,
             sum(dr - cr) over (order by date) as balance
      from t
     ) t
where date >= '2019-05-15';

Другими словами, вычислить остаток в подзапросе.Затем выполните фильтрацию во внешнем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...