【问题标题】:Update column value from a column in a different table从不同表中的列更新列值
【发布时间】:2013-07-05 20:03:57
【问题描述】:

我有两张桌子 1) 每周点击 2) 每月点击次数

一个月内的每个星期,每月点击中的一列都会使用每周点击表中的数据自增。

每周命中表包含如下信息:

Name   Date      TypeofHit     Location

Jeff  10-10-12      Bunt       New York
Sally 10-12-12      Bunt       Wyoming
 Joe  10-12-12      Hit        Texas
Mark  10-14-12      Hit        Ohio
James 10-15-12      Miss       California

月度表的结构如下。

TypeofHit   TCount
   Bunt       2
   Hit        2
   Miss       1

我想要做的是将每周表中的总 TypesofHits 添加到每月表中

SELECT COUNT(*) From WEEKLY GROUP BY TypeofHit

上面给出了我需要添加到每月表中的数字,但是我在使用 Update 语句进行正确格式化时遇到了问题。我试过了

UPDATE Monthly SET TCount + (SELECT Count(*) from Weekly GROUP BY TypeofHit) WHERE Monthly.TypeofHit = Weekly.TypeofHit 

我正在使用 MSSMS

【问题讨论】:

  • 也许这个link会有用

标签: sql sql-server


【解决方案1】:

你需要JOIN两个表:

UPDATE M
SET M.TCount = M.TCount + W.TCount
FROM Monthly M
INNER JOIN (SELECT  TypeofHit,
                    COUNT(*) TCount
            FROM Weekly
            GROUP BY TypeofHit) W
    ON M.TypeofHit = W.TypeofHit

顺便说一句,我错过了月表上的日期,您需要确保也按该列加入它们,这样才有意义。

【讨论】:

    【解决方案2】:

    我想你正在寻找更新月表的更新语句,那么你可以使用下面的

    UPDATE M
    SET M.TCount = M.TCount + A.TypeCount
    FROM Monthly M 
    JOIN (
    select count(1) TypeCount, TypeofHit   from Weekly GROUP BY TypeofHit
    ) A
    on A.TypeofHit = M.TypeofHit 
    

    【讨论】:

      【解决方案3】:

      试试这个查询(这里是 EXAMPLE,这很完美:

      WITH tempTable1 AS
      (
          SELECT TypeofHit, COUNT(*) as c FROM Weekly
          GROUP BY TypeofHit
      )
      UPDATE Monthly  
      SET Monthly.TCount = Monthly.TCount + T2.c
      FROM Monthly
      INNER JOIN tempTable1 T2 ON Monthly.TypeofHit = T2.TypeofHit
      

      【讨论】:

        【解决方案4】:
        UPDATE a
           SET a.TCount = a.TCount + b.TCount
          FROM Monthly a,(  select TypeofHit, count(*) TCount   
                              from WEEKLY 
                          GROUP BY TypeofHit
                         ) b
         WHERE a.TypeofHit = b.TypeofHit 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-25
          • 2023-01-11
          • 1970-01-01
          • 1970-01-01
          • 2014-12-08
          • 1970-01-01
          • 2019-07-14
          • 1970-01-01
          相关资源
          最近更新 更多