我有2个表,其中的值如下:
表A:
| Date | Time | Count |
===============================================
| D1 | T1 | 0 |
| D1 | T2 | 0 |
| D2 | T1 | 0 |
| D2 | T2 | 0 |
表B:
| Date | Time | Value |
===============================================
| D1 | T1 | a |
| D1 | T1 | b |
| D1 | T1 | c |
| D1 | T2 | e |
| D2 | T1 | f |
| D2 | T1 | g |
| D2 | T1 | h |
| D2 | T2 | i |
| D2 | T2 | j |
我正在尝试创建一个查询,该查询可以计算 Table B
中的 Value
数量,并将结果插入到 Count
列中表 A
结果应显示的位置(在表 A 上):
| Date | Time | Count |
===============================================
| D1 | T1 | 3 |
| D1 | T2 | 1 |
| D2 | T1 | 3 |
| D2 | T2 | 2 |
我尝试使用正常的更新与代码:
UPDATE A
SET Count = (SELECT COUNT(Value)
FROM B, A
WHERE A.Date = B.Date
and A.Time = B.Time)
However, it resulted in all Count becoming 9 instead of showing each Date and Time set its value
我无法为每个日期和时间数据创建 ID,因为“日期和时间”列的值每小时都会更改
我的代码有问题吗?或者有其他方法可以解决这个问题吗?
预先感谢您提供的任何帮助
最佳答案
SQL 的主要问题是它不区分行 - 它只是将所有行更新为单个计算值。您需要将要更新的表连接回源 - 在本例中是 tableB
的分组版本。
这样就可以了
UPDATE tableA
SET Count = b.Count
FROM tableA a
INNER JOIN
(
SELECT Date, Time, COUNT(value) as Count
FROM tableB
GROUP BY Date,Time
) b
ON a.Date = b.Date AND a.Time=b.Time
关于sql - 如何在 SQL Server 上计算以 2 列作为参数的表中的值的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49486015/