0

我有两张桌子 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 Monthly SET TCount + (SELECT Count(*) from Weekly GROUP BY TypeofHit) WHERE Monthly.TypeofHit = Weekly.TypeofHit 

我正在使用 MSSMS

4

4 回答 4

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 
于 2013-07-06T01:48:00.080 回答
0

试试这个查询(这里是一个示例,这非常有效:

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
于 2013-07-05T20:32:48.457 回答
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

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

于 2013-07-05T20:28:30.703 回答
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 
于 2013-07-05T20:28:47.337 回答