sql - 根据同一行中的行值逐行更新列值
问题描述
我有一张这样的memberID
桌子Date
:
MEM_ID DATE ttl_sales
-------------------------------------
19960124000007 2020-01-19 NULL
19960131001079 2020-01-20 NULL
19960203001249 2020-01-07 NULL
19960205000213 2020-01-14 NULL
我需要ttl_sales
从 a更新sales_table
,条件是使用MEM_ID
同一行和同一行之前发生的事务DATE
。
以后可能需要用到类似的功能,但条件更复杂(在给DATE之前加上在某些商店交易,用某些产品等),所以相关的关键词和解决方案都是受欢迎的。
我正在使用 SQL Server。
谢谢你。
解决方案
最简单的方法是协调一个子查询,根据成员 mem_id 对 sales 中的行求和:
UPDATE members
SET ttl_sales = (
SELECT sum(s.amount)
FROM sales s
WHERE s.sale_date < members.[date] and s.mem_id = members.mem_id
)
我假设 ttl_sales 是销售总额。如果是计数,请使用COUNT(*)
而不是SUM(amount)
您可以向 WHERE 添加更多子句以容忍您对产品、商店等的要求
推荐阅读
- php - 使用 PHP 和 AJAX 选择的选项
- microsoft-teams - 在 Microsoft 团队桌面应用程序中注销 iframe
- python - 如何解释这个列表理解?
- python - 使用 itertools 循环计算行数
- google-apps-script - 将 Google 工作表导出为 .XLXS 并重命名
- r - Dplyr - 错误:由于类型不兼容(data.frame / data.frame),无法加入“Texto”x“Texto”
- c# - 我如何将 UI 对象位置统一转换为 3d 世界位置
- screen-scraping - 项目调用的屏幕抓取自动化
- openssl - 使用openssl genrsa时passout参数的作用是什么
- python - 如果字符串在另一个文件的 Python 列表中,则删除对象