sql-server SQL Server:当[关闭]时用其他列的总和更新列

bkhjykvo  于 2022-10-31  发布在  SQL Server
关注(0)|答案(3)|浏览(230)

已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

17天前关闭。
Improve this question
假设我有如下所示的表结构。当动物数量相等时,我可以使用哪个SQL脚本来更新表中的Size2列,并将其更新为Size列的总和?平台是SQL Server。
我想有一列Size2,它是当动物名称彼此相等时Size的和。我很难把下面的脚本放到一个update语句中,但请参见select语句。

CREATE TABLE table1 
(
    Size    nvarchar(50),
    Animals nvarchar(250),
    Part    int,
    Size2   nvarchar(250) 
);

| 尺寸大小|动物|部件|
| - -|- -|- -|
| 30个|Pig|一个|
| 六十个|老虎|一个|
| 10个|老虎|2个|
| 30个|Pig|2个|
| 九十|狮子|一个|
| 20个|狮子|2个|
| 10个|狮子|三个|
这是所需的输出,我在表中还没有Size 2列。
| 尺寸大小|动物|部件|大小2|
| - -|- -|- -|- -|
| 30个|Pig|一个|六十个|
| 六十个|老虎|一个|七十个|
| 10个|老虎|2个|七十个|
| 30个|Pig|2个|六十个|
| 九十|狮子|一个|一百二十个|
| 20个|狮子|2个|一百二十个|
| 10个|狮子|三个|一百二十个|
到目前为止我已经:

SELECT
    Animals,
    SUM(TRY_CONVERT(int, Size))
FROM
    Table1
WHERE
    Part IS NOT NULL
GROUP BY
    Animals
hwazgwia

hwazgwia1#

对于select语句,可以使用PARTITION BY子句
这是select语句

SELECT Size, Animals, Part,
SUM(CAST(size as int)) OVER(PARTITION BY Animals) As total_size
FROM table1
WHERE part IS NOT NULL;

For update语句

UPDATE table1
SET table1.size2 = table2.total_size
FROM
    table1
    INNER JOIN
    (SELECT Size, Animals, Part,
    SUM(CAST(size as int)) OVER(PARTITION BY Animals) As total_size
    FROM table1
    WHERE part IS NOT NULL) AS table2
    ON table1.size = table2.size AND
    table1.animals = table2.animals AND
    table1.part = table2.part;

注意:上面的UPDATE语句将只更新部分不为空的size2列。
如果要更新所有size2列(即使part为空),则删除最后一行(table1.part = table2.part)即可

dxpyg8gm

dxpyg8gm2#

可以通过以下SQL语句获得所需的结果

SELECT t.Size, t.Animal, t.Part, t2.AnimalSum
FROM table1 t RIGHT JOIN
(SELECT Animal, Sum(convert(int,Size)) AS AnimalSum
FROM table1
group BY Animal) AS t2 ON t.Animal = t2.Animal

因此可以使用上面的查询语句轻松地对update进行更新。

slhcrj9b

slhcrj9b3#

通过查询,您可以使用以下内容进行更新

UPDATE t1
SET 
t1.Size2 = t2.SumSize
FROM Table1 t1
INNER JOIN
(SELECT Animals, SUM(TRY_CONVERT(int,Size)) as SumSize
FROM Table1
WHERE Part IS NOT NULL
GROUP BY Animals) t2
ON t1.Animals = t2.Animals

相关问题