2013-06-17 5 views
0

У меня есть две таблицы, и я хочу обновить текущие строки из этой таблицы в основную таблицу, я - администратор базы данных, поэтому для меня я напишу большой цикл, поэтому думал, можно помочь мне. Поэтому в основном я хочу обновить таблицу 2 из таблиц 1 значений (lastTimestamp и count), а уловка - подсчет в таблице 2, должен увеличиваться с последнего подсчета в таблице 1, если счетчик таблицы 2 равен 48, а последний счет 1 - 1. добавьте от 1 до 48, а значение в таблице 2 должно быть 49 с последней отметкой времени из таблицы 1. Надеюсь, у меня есть смысл.Обновить значения таблицы при увеличении основного значения

Ниже приведены данные

Таблица 1 (Таблица Name)

Column > DBName Proc Name    CTimeStmp    Count LatestTimeStmp  Calls 

Data > 
DB_US, upGetSelfServiceHelp, 2011-02-10 11:37:22.490,  48, 2013-06-17 07:21:41.480,  0 
DB_US, upGetSelfServiceHelp, 2011-02-10 11:37:22.490,  1, 2013-06-17 14:18:33.997,  0 

Таблица 2 (Таблица Name)

Column > DBName Proc Name    CTimeStmp    Count LatestTimeStmp  Calls 

Data > 
DB_US upGetSelfServiceHelp 2011-02-10 11:37:22.490 48 2013-06-17 07:21:41.480 0 
+0

Что такое первичный ключ для каждой таблицы? –

+0

Нет первичного ключа на столе ... – DreamszAlone

+0

Хорошо. Просто пытаюсь лучше понять ваш запрос. Является ли цель таблицы 1 работающим журналом всех вызовов proc и Table 2 совокупностью, показывающей последнюю временную метку и общее количество вызовов? –

ответ

2

это даст ли вам, что вам нужно?

update [Table 2] set 
    [LatestTimeStmp] = (select max([LatestTimeStmp]) from [Table 1] t1 where t1.DBName = t2.DBName and t1.ProcName = t2.ProcName), 
    [Count] = (select sum([Count]) from [Table 1] t1 where t1.DBName = t2.DBName and t1.ProcName = t2.ProcName) 
from 
    [Table 2] t2 

или дублирование подзапроса трется вы неправильно, это делает то же самое:

update [Table 2] set 
    LatestTimeStmp = t1.LatestTimeStmp, 
    [Count] = t1.Count 
from 
    [Table 2] t2 
    join (
     select 
      DBName, 
      ProcName, 
      max(LatestTimeStmp) LatestTimeStmp, 
      sum(Count) [Count] 
     from 
      [Table 1] 
     group by 
      DBName, 
      ProcName 
     ) t1 on t1.DBName = t2.DBName and t1.ProcName = t2.ProcName 
+0

Хорошо бы ни дал JC Я на 90% отлично справляюсь с этим, мне действительно нужна была не сумма из Таблицы 1, а последняя форма значений Таблица 1, добавленная (добавленная) в таблицу 2, значение счета .... в любом случае превосходные предложения, и я считаю, что причина Разработчики \ Хорошие кодировщики всегда имеют высокую видимость и уважение .... – DreamszAlone

+0

@ user1948904 - да, если бы это сработало. :) update-set не поддерживает группировку или агрегатные функции, кроме как в подзапросе. –

+0

@DreamszAlone - Если последнее значение из T1 всегда добавляется к сумме в T2, то оно должно быть функционально эквивалентно сумме, не так ли? –