SQL 服务器:复杂比较和更新
SQL Server : Complex Comparison & Update
老用户,第一次发布。
如果我在 powershell 中编写脚本,我现在可能已经完成了。我正在尝试扩展我的 MSSQL 技能,需要你的帮助。我考虑过在 MSSQL 中循环,但许多网站都淡化了这一点,因此正在考虑创建一个函数,但我似乎卡住了,需要一些帮助。
问题:
- 将 table 1 中的值 1 与 table 2 中的值进行比较,并计算 return 为真的比较。比较值 2 是否等于或小于值 1,如果为真,则将 1 添加到 count
- 用return为真
的总计数更新table 1
- 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
老用户,第一次发布。
如果我在 powershell 中编写脚本,我现在可能已经完成了。我正在尝试扩展我的 MSSQL 技能,需要你的帮助。我考虑过在 MSSQL 中循环,但许多网站都淡化了这一点,因此正在考虑创建一个函数,但我似乎卡住了,需要一些帮助。
问题:
- 将 table 1 中的值 1 与 table 2 中的值进行比较,并计算 return 为真的比较。比较值 2 是否等于或小于值 1,如果为真,则将 1 添加到 count
- 用return为真 的总计数更新table 1
- 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