請提供一算法實現,謝謝!
在出入庫時有兩種記錄:入庫和出庫.
入庫有 :起號~迄號
出庫也有:起號~迄號.
現需要對入庫和出庫的票據進行合併,即在入庫紀錄中去除出庫的記錄.
有如下情況:
狀況一:
合併前:
日 期 起 號 迄 號
入 11/1 1 10
入 11/2 11 15
入 11/3 16 20
合併後:
起 號 迄 號 張 數
1 10 10
11 15 5
16 20 5
狀況二:
合併前:
日 期 起 號 迄 號
入 11/1 1 10
入 11/2 11 15
入 11/3 16 20
出 11/4 1 10
合併後:
起 號 迄 號 張 數
11 15 5
16 20 5
狀況三:
合併前:
日 期 起 號 迄 號
入 11/1 1 10
入 11/2 11 15
入 11/3 16 20
出 11/4 8 13
合併後:
起 號 迄 號 張 數
1 7 7
14 15 2
16 20 5
狀況四:
合併前:
日 期 起 號 迄 號
入 11/1 1 10
入 11/2 11 15
入 11/3 16 20
出 11/4 8 17
合併後:
起 號 迄 號 張 數
1 7 7
18 20 3
狀況五:
日 期 起 號 迄 號
入 11/1 1 10
入 11/2 11 15
入 11/3 16 20
出 11/4 8 9
合併後:
起 號 迄 號 張 數
1 7 7
10 10 1
18 20 3
11 15 5
16 20 5
等等.請提供一算法實現,謝謝!
[解决办法]
能改表结构吗?
日期 号
入 11/1 1
入 11/1 2
入 11/1 3
....
入 11/1 10
出 11/2 1
出 11/2 2
....
表面上看,这增大了数据量,但是插入,更新,还有合并时候的查询,其业务逻辑都是最简单,同时也是最符合实际情况的。我估计你们只是最后合并后的那张类似报表的东西里面需要起迄号,而前面那张流水账的表,并不是必须的(即使UI上用户输入的是起迄号,insert/update也只是个循环)
否则你们的设计虽然能大量节约数据量,但是却可能导致超大量的计算问题,实际性价比应该更低
比如
入 11/1 1 10
出 11/2 10 10
入 11/2 11 15
出 11/3 4 5
出 11/4 1 1
出 11/5 12 13
出 11/6 2 3
......
而且,即使能想出算法来,万一业务逻辑稍有变更,可能又要推翻。
你现有表结构的算法正在思考中...