sql - 在 SQL Server 中使用具有两个条目(值)的同一个表中的另一列更新列

标签 sql sql-server

我正在尝试从同一表中名为 Product 的列更新列 Product_Group。此 Product 列有两个条目,SimpleOthers。即在 Invoice 表中显示如下:

Invoice Table

我遇到的问题是,如果您查看 Top_Level ID 10、19、21 和 31 有多个条目并且产品也有多个(即简单和其他)。

我想要实现的是,当我看到拥有 Simple 和 Others 的 Top_Level 然后将 Product_Group 列更新为“Simple/Other”

Final outcome

我怎样才能做到这一点?

最佳答案

如果您只有 2 个产品,那么您可以使用:

WITH cte AS (
   SELECT Top_Level, COUNT(DISTINCT Product) AS cnt
   FROM tab
   GROUP BY Top_Level
)
UPDATE t
SET Product_group = CASE WHEN cnt = 1 THEN t.Product ELSE 'Others/Simple' END;
FROM tab t
JOIN cte ctab
  ON c.Top_Level = t.Top_Level;

关于sql - 在 SQL Server 中使用具有两个条目(值)的同一个表中的另一列更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688751/

相关文章:

sql-server - 当命令类型为 adCmdText 时是否可以使用命名参数?

mysql - MySQL bigint转UUID的存储过程

mysql - 将汇总行添加到表格末尾

sql - Postgres - 如何在表结构查询中检索默认值

sql - 将存储过程的结果插入表中并添加一个额外的列

sql - @@IDENTITY 和触发问题

c# - Azure 数据库的 DATEADD 函数

sql - 在 Postgres 中使用 JSON 函数将列值作为键

c# - Linq-to-SQL:有多少数据上下文?

sql - 需要使用聚合函数提高 SQL 查询的性能