Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果ID中的任何行包含特定值,请选择此选项_Sql_Oracle - Fatal编程技术网

Sql 如果ID中的任何行包含特定值,请选择此选项

Sql 如果ID中的任何行包含特定值,请选择此选项,sql,oracle,Sql,Oracle,我有一个带有ID及其分类的DB(还有更多现在无用的列), 由于未使用列的不同,一个ID可能具有不同的分类,如: ID Classification 1001 A 1001 A 1002 A 1002 A 1002 B 我需要的是对ID进行分组,并按照规则进行分类:“如果此ID中的任何行是'B'-分类的,则该组(具有此ID的单行)是'B'-分类的,否则为'A'-分类的 所以ID1001=A,但是ID1002=B 我知道WHERE

我有一个带有ID及其分类的DB(还有更多现在无用的列), 由于未使用列的不同,一个ID可能具有不同的分类,如:

ID        Classification

1001      A
1001      A

1002      A
1002      A
1002      B
我需要的是对ID进行分组,并按照规则进行分类:“如果此ID中的任何行是'B'-分类的,则该组(具有此ID的单行)是'B'-分类的,否则为'A'-分类的

所以ID
1001=A
,但是ID
1002=B

我知道
WHERE tab.field=ANY()
函数,但我有一个相反的情况——比较的左部分应该是ANY,而右部分应该是硬编码的。我有点假设,由于比较结果是布尔值,左\右部分的位置是不相关的,但我无法找出查询子查询关系


请提供帮助

您可以使用
计数
窗口功能来执行此操作

select distinct id
,case when count(case when classification='B' then 1 end) over(partition by id) >=1 then 'B' else 'A' end as classified
from t

您可以使用
count
窗口功能来执行此操作

select distinct id
,case when count(case when classification='B' then 1 end) over(partition by id) >=1 then 'B' else 'A' end as classified
from t

对于兴趣分类也是字母最后一个字母位置的特殊情况,您可以简单地执行以下操作:

SELECT
  ID,
  MAX(Classification)
FROM tab
GROUP BY ID;

对于兴趣分类也是字母最后一个字母位置的特殊情况,您可以简单地执行以下操作:

SELECT
  ID,
  MAX(Classification)
FROM tab
GROUP BY ID;

您只需找到每个id的最大分类数:

select id,
    max(classification)
from your_table
group by id;

您只需找到每个id的最大分类数:

select id,
    max(classification)
from your_table
group by id;

根据“B”>“a”这一事实,您是否可以将
按ID进行分组
与a
MAX(分类)
结合使用?分类中的值是否只能是a或B?目前只有2个分类案例\值(它们不是“a”和“B”,而是字符串,因此可以进行比较)。我只是想为未来可能的变化制定一个通用的解决方案。您可以将
按ID分组
与a
MAX(分类)
相结合,依赖于“B”>“a”?分类中的值只能是a还是B?目前只有2个分类案例\值(它们不是“A”和“B”,而是字符串,因此可以比较)。我只是想为未来可能发生的变化制定通用解决方案,就像一个符咒!用作通用解决方案,谢谢!工作起来像符咒!用作通用解决方案,谢谢!