【发布时间】:2021-04-25 09:00:06
【问题描述】:
在 sql 中处理此问题时遇到问题。有一张与客户相关的支票金额表。如果我想给他们每个支付的唯一号码,我无法弄清楚如何仅使用更新语句而不是逐行进行(有大量数据)
我必须按特定标准进行分组,然后发出付款,但不能超过 10000 美元。
表格
customer CheckAmount
a 4000
a 5000
a 2001
b 3333
c 8000
d 11000
我更新后应该是这样的:
customer checkamount paymentnumber
a 4000 1
a 5000 1
a 2001 2
b 3333 3
c 8000 4
d 11000 5
这是否可能仅在更新语句中?
【问题讨论】:
-
您的数据库是否使用 MySQL、SQL Server、Oracle、PostgreSQL 或其他东西?您的数据是否按客户分类?不应该为 9001 而不是 2001 编写检查 #2 吗?为什么客户
d在限额为 10K 时收到 11K 的支票? -
SQL 服务器。编辑了一个错字,都应该是 2001, .限制是 10K,但如果超出单个订单项,我对此无能为力,不能拆分。数据只是具有多个客户的行项目发票,例如,我提取了其中一个主表中的两列,以使其易于显示。谢谢。
-
可以使用逐行操作来做到这一点。不确定基于集合的解决方案。我会考虑为客户和付款生成两个额外的 int 列,然后使用嵌套的 while 循环来遍历这些检查和更新付款编号。显然效率不高,但可行。或者,您可以尝试在单个 while 循环中进行自联接
-
是否可以在源数据中多获取一列,以按时间或按付款的序数确定记录顺序?
-
数据来自大约 20 个加入的表。我只包括了那几列,以便更容易查看是否有人可以直接告诉我是否可以完成。目前有id。我知道它可以通过循环来完成,我只是不确定使用 floor 或其他东西是否可以实现这一点。多年来一直在做 sql,但我还没有看到任何类似的东西,我很难过。根据行数等很容易做到,但我只是不知道分组