首页 > 解决方案 > 当组合列的日期计数大于2时,如何检查一列的数据是否存在

问题描述

假设我有一张桌子 A:

我想检查 Name , class,roll,subjects 是否相同,如果这 4 个组合的日期数大于 2,则标记的检查值必须大于 0。

Name    Class   Roll    Subject Marks   Date
a       1       1       abc     10      01.01.2001
a       1       1       abc             02.01.2001
a       1       1       abc     30      03.01.2001
b       2       2       xyz     10      01.01.2001
b       2       2       xyz             02.01.2001
b       2       2       xyz     20      03.01.2001

从上表来看,

由于 a,1,1,abc 是相同的,我想检查标记是否对 date > datecount(2) 有任何值。在这种情况下是 03.01.2001,对于 b,2,2,xyz 也是 03.01.2001

标签: sql

解决方案


您可以使用 ROW_NUMBER() 检查相同的内容

WITH subset1
 AS (SELECT dd.*,
            Row_number()
              over(
                PARTITION BY name, class, roll, subject
                ORDER BY date1) rw
     FROM   data dd)
  SELECT marks,
   ss.*
  FROM   subset1 ss
  WHERE  rw = 3; 

推荐阅读