SQL 服务器:复杂比较和更新

SQL Server : Complex Comparison & Update

老用户,第一次发布。

如果我在 powershell 中编写脚本,我现在可能已经完成了。我正在尝试扩展我的 MSSQL 技能,需要你的帮助。我考虑过在 MSSQL 中循环,但许多网站都淡化了这一点,因此正在考虑创建一个函数,但我似乎卡住了,需要一些帮助。

问题:

  1. 将 table 1 中的值 1 与 table 2 中的值进行比较,并计算 return 为真的比较。比较值 2 是否等于或小于值 1,如果为真,则将 1 添加到 count
  2. 用return为真
  3. 的总计数更新table 1
  4. table1中的每一行都是唯一的,table2中有多条记录可以进行比较。因此,table 1 中的每一行都有一个空列值,对于计数,需要更新

以下预期结果:2015 年,table 2 中有 4 条 A 类记录。当我检查 table 1 中的 val,50 与 [=37 中的那些记录时=] 2,只有 3 个记录会 return 如果我做小于或等于。因此 3 将被添加到 table 1

中的计数

表 1

| ID    Val     Year    Type    Count |
  1     50       2015    A
  1     60       2015    B
  1     75       2015    C
  2     90       2015    A

表 2

| ID    Val     Year    Type    |
  1     40       2015    A
  1     50       2015    A
  1     45       2015    A
  1     90       2015    A

我不确定您是如何进行比较的,但听起来您正在寻找子查询。

UPDATE Table1 
SET [Count] = 
(
    SELECT COUNT(*) FROM Table2 
    WHERE Table1.ID = Table2.ID
    AND Table2.Val <= Table1.Val
)

可以使用 INNER 或 CROSS JOINS。

UPDATE T1
SET [Count] = COUNT(*) FROM 
Table1 T1 JOIN Table2 T2 
ON T1.Type = T2.Type AND T1.Year = T2.Year 
WHERE T1.Val>=T2.Val