игнорирование последнего значения, если оно совпадает с текущим значением - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть таблица, в которой я хотел бы запросить следующее:

Данные поступают в виде пакетов.Эти данные объединяются с идентификатором.

Этот идентификатор получает отправленные только при поступлении нового пакета. После этого идентификатор изменяется только при наличии нового пакета.В то же время значение остается нулевым

Что мне нужно сделать, это если новые данные поступают и имеют тот же идентификатор, что и в предыдущем пакете, я должен продолжить вставку с нулем в поле идентификатора вместо нажатияНовая строка с тем же значением идентификатора.

Ниже приведен упрощенный вид таблицы

ID            Values
1             10
null          20
null          20
null          20
null          20
2             20
null          20
null          20
null          20
null          20
1             20
null          20

Если бы вы могли помочь мне указать направления, которые бы мне очень помогли.

Может быть, для уточнения значения идентификатора используется набор тегов.Таким образом, есть несколько определенных тегов (100 или более), и когда приходит новый пакет, пакет получает тег с ним.И если этот тег такой же, как и предыдущий, то вместо вставки того же тега необходимо продолжить нулевое значение

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Это ниже Sp может помочь инертным данным попробовать это

IF OBJECT_ID('tempdb..#Temp')IS NOT NULL
DROP TABLE #Temp

CREATE TABLE #Temp (ID INT,[Values] INT)

CREATE PROCEDURE usp_Insert 
(
@Id INT,
@Values INT
)
AS
BEGIN
IF NOT EXISTS (SELECT 1 FROM #Temp WHERE ID = @ID)
BEGIN
    INSERT INTO #Temp(ID,[Values])
    SELECT @Id,@Values
END  
ELSE 
    INSERT INTO #Temp(ID,[Values])
    SELECT NULL,@Values

END


EXEC usp_Insert 2,12

SELECT * FROM #Temp
0 голосов
/ 24 сентября 2019

Вам потребуется добавить поле идентификатора (или метку времени), чтобы иметь возможность запросить последний идентификатор.

ALTER TABLE MyTable ADD MyIdent INT IDENTITY(1, 1) NOT NULL

Затем, вставив (если значение Id равно NULL), выможно позвонить

INSERT INTO MyTable (Id, Values) 
   SELECT TOP 1 Id, @ValuesVariable 
   FROM MyTable 
   WHERE Id IS NOT NULL
   ORDER BY MyIdent DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...