Sql 我提供的ion需要按用于加入的每个列进行分组。这样可以确保您只评估与相关行匹配的组。在相关子查询方法中,WHERE子句将行过滤为仅匹配并进行确定。在连接方法中,我们需要添加所有具有确定的组,并将这些组连接到原始表的行中。行的增加是由于类别是组所依据的,而不

Sql 我提供的ion需要按用于加入的每个列进行分组。这样可以确保您只评估与相关行匹配的组。在相关子查询方法中,WHERE子句将行过滤为仅匹配并进行确定。在连接方法中,我们需要添加所有具有确定的组,并将这些组连接到原始表的行中。行的增加是由于类别是组所依据的,而不,sql,postgresql,Sql,Postgresql,我提供的ion需要按用于加入的每个列进行分组。这样可以确保您只评估与相关行匹配的组。在相关子查询方法中,WHERE子句将行过滤为仅匹配并进行确定。在连接方法中,我们需要添加所有具有确定的组,并将这些组连接到原始表的行中。行的增加是由于类别是组所依据的,而不是连接上的。您提供的测试用例可能没有什么不同。我想你做了这个b/c,你想要任何符合条件的类别来影响同一个输入日期和ID号的所有类别。这看起来很奇怪,但我不知道你的业务。如果您希望此行为,请在输入日期和ID号时将内部select包装在另一个仅选择


我提供的ion需要按用于加入的每个列进行分组。这样可以确保您只评估与相关行匹配的组。在相关子查询方法中,WHERE子句将行过滤为仅匹配并进行确定。在连接方法中,我们需要添加所有具有确定的组,并将这些组连接到原始表的行中。行的增加是由于类别是组所依据的,而不是连接上的。您提供的测试用例可能没有什么不同。我想你做了这个b/c,你想要任何符合条件的类别来影响同一个输入日期和ID号的所有类别。这看起来很奇怪,但我不知道你的业务。如果您希望此行为,请在输入日期和ID号时将内部select包装在另一个仅选择分组中。您需要执行MIN(新建列),以便所有“允许”都通过。通过这种方式,您将有1:1的连接无行复制。当连接的两侧之间存在1:1关系时,您将无法获得多于2个表中最大的一个的行。如果存在1:many关系,那么您可以在连接过程中复制此连接左侧的行。因此,如果将一个表与其自身联接,但第二个版本是按列a分组的。并且联接条件为a=a,则左侧的行不能增加-每行的值为a,并且由于group by,右侧只有一行具有该值。
SELECT A.ID_NO,A.CATEGORY,
CASE WHEN 
(SELECT * FROM NEW_TEST B 
WHERE CATEGORY IN ('ODS','L')
) 
THEN 'ALLOW'
ELSE 'DENY'
END AS NEW_COL
FROM NEW_TEST A;
SELECT A.ID_NO, A.ENTRY_DATE, A.CATEGORY,
       (CASE WHEN SUM(CASE WHEN CATEGORY IN ('ODS', 'L') THEN 1 ELSE 0 END) OVER (PARTITION BY ID_NO, ENTRY_DATE) < 3
             THEN 'ALLOW' ELSE 'DENY'
        END) as NEW_COL
FROM NEW_TEST A;
SELECT A.ID_NO, A.ENTRY_DATE, A.CATEGORY,
       (CASE WHEN SUM(CASE WHEN CATEGORY = 'ODS' THEN 1 ELSE 0 END) OVER (PARTITION BY ID_NO, ENTRY_DATE) < 3 OR
                  SUM(CASE WHEN CATEGORY = 'L' THEN 1 ELSE 0 END) OVER (PARTITION BY ID_NO, ENTRY_DATE) < 3
             THEN 'ALLOW' ELSE 'DENY'
        END) as NEW_COL
FROM NEW_TEST A;
SELECT A.ID_NO,A.ENTRY_DATE,A.CATEGORY,
 NVL(B.NEW_COL, 'DENY') AS NEW_COL
  FROM NEW_TEST A
  LEFT JOIN (SELECT ID_NO, ENTRY_DATE, 'ALLOW' AS NEW_COL 
             FROM NEW_TEST B 
             WHERE CATEGORY IN ('ODS','L')
             GROUP BY B.ID_NO,B.ENTRY_DATE,B.CATEGORY
             HAVING COUNT(1)<3) B
  ON B.ID_NO=A.ID_NO AND B.ENTRY_DATE=A.ENTRY_DATE ;