2013-07-05 6 views
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 

выше дает мне цифры, мне нужно, чтобы добавить к Monthly стола, но я возникли проблемы с правильным форматированием с помощью оператора Update. Я попытался

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

Я использую MSSMS

+0

Возможно, эта [ссылка] (http://stackoverflow.com/a/17047692/1563878) будет полезна –

ответ

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 

И, кстати, я пропускаю дату на ежемесячной таблице, вам нужно обязательно присоединить их к этой колонке, чтобы это имело смысл.

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 
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 
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 
Смежные вопросы