2013-03-25 2 views
0

У меня есть 2 таблицы следующим образом, и мне нужно обновить таблицу WorksOperation с данными из WorksTrackingОбновление таблицы SQL

WorksTracking Table.

ID WorksID WorksOperationID DateTime     SubOperationID EmployeeID 
1 2182  5363    2012-11-26 12:30:00.000 3    96 
2 6866  9856    2012-11-26 10:26:00.000 3    100 
3 2182  5363    2012-11-26 16:13:00.000 4    96 
4 6866  9856    2012-11-26 13:42:00.000 4    100 
6 2182  5363    2012-11-26 06:30:00.000 3    96 
7 2182  5363    2012-11-26 12:30:00.000 4    96 

SubOperationID = 3 = Start 4 = End

ЭТО ЧТО МНЕ НУЖНО

WorksOperation табл.

ID WorksID WorksOperationID StartTime    EndTime    SubOpID EmpID 
1 2182  5363    2012-11-26 12:30:00.000 2012-11-26 16:13:00.000 4  96 
2 6866  9856    2012-11-26 10:26:00.000 2012-11-26 13:42:00.000 4  100 
3 2182  5363    2012-11-26 06:30:00.000 2012-11-26 12:30:00.000 4  96 
+5

Пожалуйста, укажите RDBMS, что вы настраиваются путем добавления соответствующего тега (Oracle, SQL Server, MySQL и т. д.). Могут быть ответы, которые используют преимущества языка или функций продукта, которые не поддерживаются повсеместно. Кроме того, помечая его с помощью конкретной СУБД, ваш вопрос может получить внимание от людей, более подходящих для ответа на него. – Taryn

ответ

0

Это будет работать на SQL Server (2005 и новее), но если это не ваша РСУБД, он легко может быть адаптирована:

;WITH ALLSTARTS AS 
( 
    SELECT * FROM WorksTracking WHERE SubOperationID = 3 
) 
--INSERT INTO WorksOperation 
SELECT s.WorksID , 
     s.WorksOperationID , 
     s.DateTime AS StartTime, 
     e.DateTime AS EndTime, 
     e.SubOperationID AS SubOpID, 
     e.EmployeeID FROM ALLSTARTS s 
INNER JOIN dbo.WorksTracking e ON e.SubOperationID = 4 
AND e.DateTime = (SELECT MIN(e.DateTime) FROM WorksTracking e WHERE s.WorksID = e.WorksID AND s.WorksOperationID = e.WorksOperationID AND e.DateTime>s.DateTime) 

SqlFiddle

+0

HI Когда я запускаю запрос, таблица рабочих операций не обновляется, можете ли вы помочь, как при выполнении запроса, результат правильный, но update is not tacking effect – Hypocraties

+0

Строка INSERT помещается в комментарии, например, из набора результатов, просто удалите комментарии с начала этой строки. Однако учтите, что я предположил, что теперь есть строки в WorksOperation, и этот запрос вставляет новые строки. Если у вас на самом деле уже есть строки и просто нужно обновить некоторые столбцы, скажите так, потому что запрос нужно немного переписать. –

+0

Мне нужно опубликовать ваши результаты, если это нормально, поскольку что-то не отображается правильно, так как оно запускает время начала и окончания в будущем. – Hypocraties

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