支付记录表中,如何匹配支付和支付取消的记录

walkman_22 2012-06-12 10:45:27
有支付记录表A,现需要从中提取支付记录,支付记录存在支付和支付取消的状况。

如果存在和支付记录对应的取消记录,则不提取。

例如:
表A中有记录
时间 支付金额 支付状况
2/1 2000 支付
2/1 -2000 取消支付

这两条即为匹配记录。
如何在提取支付记录时把这样的对应记录剔除?
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyh070207 2012-06-12
  • 打赏
  • 举报
回复
感觉是不是要加一个唯一id字段,做取消支付时,记录一下对应的支付id,按金额去匹配,有多条相同金额的记录时,会出错....
walkman_22 2012-06-12
  • 打赏
  • 举报
回复
我的方法基本上也是这样,但是存在这样一个问题。
如果记录是像下面这样:
表A中有记录
时间 支付金额 支付状况
2/1 2000 支付
2/1 -2000 取消支付
2/1 2000 支付

则这三条记录都会被剔除掉。我只需要剔除其中两条相抵消的。

另外,表中的时间应该是不相等的,正常就是先有支付,才有取消支付,这是个防止误操作的机制。
  • 打赏
  • 举报
回复
select * from 表A a where not exists(
select 1 from表A b where a.时间 =b.时间 and b.支付状况='取消支付')

try
walkman_22 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
感觉是不是要加一个唯一id字段,做取消支付时,记录一下对应的支付id,按金额去匹配,有多条相同金额的记录时,会出错....
[/Quote]
确实会出错。问题是没有唯一ID之类的东西。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧