2013-02-17 5 views
0

У меня есть приложение, которое делает запись каждый час в базе данных MS SQL. Последняя запись на 12-м FEB является нулевым значением и отображается в моем еженедельном отчете.TSQL Синтаксис, заменить существующее «неправильное значение» с предыдущим «правильным значением»

Что я хочу сделать, это взять значение из предыдущего счета и ввести в поле вместо нулевого значения.

Может кто-нибудь предложить некоторые советы о том, как это сделать, потому что это не соответствует моим навыкам TSQL?

SELECT * FROM [dbo].[CountDetails] 
WHERE [updateTime] < '2013-02.13' 
AND [updateTime] > '2013-02.12' 
AND (DATEPART(hh,[updateTime])= '22' OR DATEPART(hh,[updateTime])= '23') 

SQL Results from query

Примечание: Приложение предполагается к нулю подсчитывать Полночь, но на 12-й ТЭБ это случилось рано, и я знаю, почему.

EDIT: Всего 5 IP-адресов и всего 6 счетчиков, потому что 192.168.168.11 имеет 2 счетчика. Таким образом, с 2111 по 2116 это целая запись для всех доступных счетчиков в 22:58 и 2117 по 2122 - это целая запись для всех доступных счетчиков в 23:58. Мне нужно заменить значения 23:58 соответствующим значением с 22:58.

+0

Поскольку вы не знаете, правильный подсчет для 2117 до 2122 ID не будет ли подсчет для них предметов назначенным 151? –

+0

Я читаю это как 2117 должно быть 576, 2118 должно быть 85, 2119 должно быть 246 и т. Д. IE, то же самое для того же описания. Но ОП должен, безусловно, прояснить это. – Joe

+0

@ Джоэ, да, если вы разделите его на описание. Я предположил из последней записи в БД. –

ответ

0

Гадать здесь, но обновление, которое присоединяется на ipAddress, counterNumber и datetime за исключением дробных секунд, разделенный на час (сделать SELECT части первым для безопасности):

UPDATE b 
SET count = a.count 
-- SELECT * 
FROM dbo.CountDetails a 
JOIN dbo.CountDetails b ON a.ipAddress = b.ipAddress AND a.counterNumber = b.counterNumber 
AND CONVERT(VARCHAR(20),b.updateTime,120) = CONVERT(VARCHAR(20),DATEADD(HOUR,1,a.updateTime),120) 
+0

Я могу получить его, чтобы установить все [COUNT] записи в одно и то же значение выкинули таблицу. У меня возникли проблемы с определением, какие записи нужно взять, а затем обновить до. Должно быть, это означает «-SELECT *». Спасибо, я буду продолжать. – VipX1

Смежные вопросы