我有一个场景,如果IDCodeInsertDate是相同的,如果它是第一个条目,那么它将是0或1.

我告诉你:

CREATE TABLE #test 
(
     ID int,
     code int,
     InsertDate datetime2
)

Insert into #test values (1,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (1,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (1,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (2,1,'2019-09-17 03:19:00.0000000')
Insert into #test values (3,1,'2019-09-17 03:19:00.0000000')

预计为O/P

ID  code    InsertDate              flag   
-----------------------------------------
1    1  2019-09-17 03:19:00.0000000  0     
1    1  2019-09-17 03:19:00.0000000  1     
1    1  2019-09-17 03:19:00.0000000  1     
2    1  2019-09-17 03:19:00.0000000  0     
3    1  2019-09-17 03:19:00.0000000  0     

我所try 的

SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY ID, Code, Insertdate ORDER BY InsertDate) flag 
FROM #test

有了这一点,我就有了初步的逻辑,但下一步我需要帮助.

推荐答案

一个简单的CASE表达式可能会有所帮助:

SELECT
   *,
   CASE 
      WHEN ROW_NUMBER() OVER (PARTITION BY ID, Code, Insertdate ORDER BY InsertDate) = 1 THEN 0 
      ELSE 1 
   END AS Flag
FROM #test

Sql相关问答推荐

表名数组

如何通过比较不同表中相同ID S的值来筛选ID为S的列表?

LAG函数通过丢弃空值返回前一行

将重复的值更新为下一个空闲数字

删除事务中的本地临时表

替换上一个或下一个值中的空值并添加其价格日期

收到%1、%2或%2邮箱的唯一客户

如何在SQL中更新Json字符串

如果多行科目有一行在指定的日期范围内,如何 Select 该科目在该日期之前的所有行?

将两列相加为同一表中的行的查询

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

使用同一个表,为什么IN、NOT IN、NOT EXISTS和EXISTS有不同的输出?

输出连续出现两次以上的行

对现有记录进行分组

使用 XML 作为 SQL 表

日期逻辑(查找过go 90 天内的第一个匹配行)

SQL Select 字母范围没有给我任何东西

标量子查询中的窗口函数不起作用

根据行号将列转置为没有任何id或键列的行

Snowflake SQL group-by 的行为不同,具体取决于列是按位置引用还是按别名引用