查询根据其他字段用最大值填充Null字段
Query to fill in Null fields with maximum value based on other fields
我有一个包含三个字段的 table:A、B、C。
- A 由整数值组成;
- 对于 A 中的 每个 个整数,B 具有 0-65 的整数,因此总行数为 A * 66;
- 对于每个A-B组合,在C中都有对应的十进制数,随着B的增加而增加。
- 但是,对于每个 A 都有不同数量的 C;所有没有对应C值的记录都是NULL
我想知道如何创建一个查询,以便每个 A 的 NULL C 记录 填充 C对应最高的值B.
例如:对于 A = 1,我们有 16 个不同的 C 值 对于 B = 0 到 15。
- 对于A = 1和B = 16到65,我想填写对应于B = 15(最高B值)的C值。
使用 Microsoft SQL Server 2012 作为 DBMS
这应该有效:
;WITH cte (A, highest_c)
AS
(
SELECT
A,
highest = MAX(C)
FROM ALinQ1
GROUP BY A
)
UPDATE tab
SET C = c.highest_c
FROM ALinQ1 tab
INNER JOIN cte c
ON tab.a = c.a
WHERE tab.C IS NULL
AND tab.B <> 0;
我有一个包含三个字段的 table:A、B、C。
- A 由整数值组成;
- 对于 A 中的 每个 个整数,B 具有 0-65 的整数,因此总行数为 A * 66;
- 对于每个A-B组合,在C中都有对应的十进制数,随着B的增加而增加。
- 但是,对于每个 A 都有不同数量的 C;所有没有对应C值的记录都是NULL
我想知道如何创建一个查询,以便每个 A 的 NULL C 记录 填充 C对应最高的值B.
例如:对于 A = 1,我们有 16 个不同的 C 值 对于 B = 0 到 15。
- 对于A = 1和B = 16到65,我想填写对应于B = 15(最高B值)的C值。
使用 Microsoft SQL Server 2012 作为 DBMS
这应该有效:
;WITH cte (A, highest_c)
AS
(
SELECT
A,
highest = MAX(C)
FROM ALinQ1
GROUP BY A
)
UPDATE tab
SET C = c.highest_c
FROM ALinQ1 tab
INNER JOIN cte c
ON tab.a = c.a
WHERE tab.C IS NULL
AND tab.B <> 0;