sql - 如果它与当前值相同,则忽略最后一个值
问题描述
我有一张表,我想在其中查询以下内容:
数据是分批来的。此数据与 id 结合。
此 ID 仅在新批次进来时才会发送。之后,ID 仅在有新批次时更改。同时,该值保持为空
我需要做的是,如果新数据进入并且它具有与前一批相同的 id,我必须在 id 字段中继续插入 null,而不是推送具有相同 id 值的新行。
下面是桌子的简单视图
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
如果你能帮我指出一个对我有很大帮助的方向。
也许要清除 id 值是一组标签。因此,有一些已定义的标签(100 个或更多),当新批次到来时,该批次会获得一个标签。如果该标签与前一个标签相同,则 null 必须继续,而不是插入相同的标签
解决方案
这低于 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
推荐阅读
- amazon-web-services - 寻找将分层文档放入 DynamoDB 的最佳方式
- google-chrome - android上的Chrome:touchevent不适用于实体点击
- python - 基本平方生成器给出错误的结果
- c++ - 使用静态 int 时 Visual Studio 2017 中的错误 LNK2001
- ruby-on-rails - 如何按 id 对 ActiveAdmin CSV 表进行排序?
- python - 键错误:0 - 位置
- java - 如何在 Spring Boot 中禁用扫描 @Configuration 类
- cloud - 音调分析器教程获取 "code":400,"sub_code":"C00012","error":"Invalid JSON input at line 1, column 2"
- android - 如何将用户上传的图像存储在 S3 私有存储桶中并将其显示在应用程序中
- azure - 您可以通过 PowerShell 使用虚拟机身份访问令牌下载 Azure Blob,而无需使用访问密钥