2016-01-13 2 views
-1

Использование SQL Server 2005/2008 Я хотел бы вставить новую строку, если вставленное последнее значение (отсортированное по _timestamp) не совпадает.SQL-вставка, если последнее значение отличается от

Например:

value | timestamp 
100 | "yesterday" 
101 | "today" 

Для следующей операции:

  • Значение 101 не должен быть вставлен в это последнее значение

Однако значение 102 следует вставить в качестве последнего значения не в этом

+0

Последнее значение чего? «значение» или «метка времени»? – SQLChao

+0

Получите верхнее значение, и если у вас есть другое, тогда сделайте вставку. – Chuck

+0

Последнее значение сортируется по метке времени. Поэтому в моем случае последнее значение равно 100. –

ответ

0

Почему вы не используете что-то подобное?

DECLARE @table TABLE(val INT, [timestamp] DATETIME) 

INSERT INTO @table 
SELECT 100, N'20160112' 
UNION ALL 
SELECT 101, N'20160113' 

SELECT * FROM @table 

INSERT INTO @table 
SELECT 101, N'20160114' 
WHERE 101 <> ISNULL((SELECT TOP 1 val FROM @table 
        ORDER BY timestamp DESC), -1) 

SELECT * FROM @table AS T 
+0

Большое спасибо. Действительно оценено –

+0

Приведенный выше пример не работает, если в базе данных нет значения, поэтому вам нужно проверить, что оно равно null. –

+0

@GrahamMorris Я обновил свой ответ. – fabulaspb

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