从不同表中的列更新列值

时间:2013-07-05 20:03:58

标签: sql sql-server

我有两张桌子 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

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

SELECT COUNT(*) From WEEKLY GROUP BY TypeofHit

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

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

我正在使用MSSMS

4 个答案:

答案 0 :(得分:0)

您需要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

而且,顺便说一下,我错过了月度表上的日期,你需要确保按照这一列加入它们,这样才有意义。

答案 1 :(得分:0)

我认为您正在寻找更新月度表的更新声明,然后您可以使用以下

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 

答案 2 :(得分:0)

尝试使用此查询(此处为 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

答案 3 :(得分:0)

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