如何根据第二个数据库的另一个字段的计算更新一个字段?

How can I update the a field based on a calculation of another field of a second DB?

非常感谢您帮助创建 SQL 查询。 我有一个名为 Purchases 的 table。 table 中有一列名为 PurchaseGender,目前没有任何信息。

我有另一个名为 Additional Info 的 table,有 2 列:MalePurchases 和 FemalePurchases。这两列中的每一列都填充了数字。

这些列将是:

Client Id FemalePurchases MalePurchases
1234 10 2
5678 3 5

我想根据计算填充 Purchases 的 PurchaseGender 列。

继续上面的例子,我想表明一个人的 PurchaseGender 是 Female 是他们购买了更多的女性物品。 另一方面,如果他们购买了更多男性商品,PurchaseGender 将为 Male

对于客户 1234,他们的 PurchaseGender 将是女性,而对于客户 5678,他们的 PurchaseGender 将是男性。

两个 table 都有共同的 Client ID 列。

SQL 查询是什么样的?

假设'DB'在这里表示table...

编辑:将 CASE 表达式移动到 CTE,并向 UPDATE 添加了一个 WHERE 子句,重复添加到 运行。

;WITH PGender
AS
(
  SELECT a.ClientId,
     CASE WHEN a.FemalePurchases > a.MalePurchases THEN 'Female'
          WHEN a.FemalePurchases < a.MalePurchases THEN 'Male'
          ELSE 'Balanced' END AS 'PurchaseGender'
  FROM AdditionalInfo a
)

UPDATE p
SET p.PurchaseGender = pg.PurchaseGender
FROM Purchases p
  INNER JOIN PGender pg ON p.ClientId = pg.ClientId
WHERE p.PurchaseGender != pg.PurchaseGender