SQL Server:复杂比较&更新

时间:2015-03-11 05:34:59

标签: sql-server function stored-procedures sql-update

长时间用户,第一次海报。

如果我要在powershell中编写脚本,我现在可能已经完成了。我试图扩展我的MSSQL技能组,可以使用你的帮助。我已经考虑过在MSSQL中循环,许多网站已经淡化了,因此我正在考虑创建一个函数,但我似乎陷入困境,并且可以使用一些帮助。

问题:

  1. 将表1中的值1与表2中的值进行比较,并计算返回true的比较。比较值2是否等于值1,如果为真,则将1添加到计数
  2. 使用返回true的总计数更新表1
  3. 表1中的每个新行都是唯一的,表2中有多个记录可以进行比较。因此,表1中的每一行都有一个列值为null,对于count,需要更新
  4. 以下预期结果:2015年,表2中有4个类型A的记录。当我检查表1中的val,50和表2中的那些时,如果我做的话,只有3个记录将返回true等于或等于。因此,表1中的Count将添加 3

    表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
    

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

可以使用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