SQL使用不同的值对条目进行分组

SQL使用不同的值对条目进行分组,sql,oracle,Sql,Oracle,假设我有一个报告,其中显示了来自不同表的ID和值 | ID | VALUE | |----|-------| 1 | 1 | 1 | 2 | 1 | 0 | 3 | 1 | 1 | 4 | 2 | 0 | 5 | 2 | 0 | 我的目标是用分组ID和值显示此表。我对分组值的规则是“如果值至少包含一个“1”,则显示“1”,否则显示“0” 我当前的SQL是(简化的) 输出如下 | ID | VALUE | |----|------

假设我有一个报告,其中显示了来自不同表的ID和值

  | ID | VALUE |
  |----|-------|
1 | 1  | 1     |
2 | 1  | 0     |
3 | 1  | 1     |
4 | 2  | 0     |
5 | 2  | 0     |
我的目标是用分组ID和值显示此表。我对分组值的规则是“如果值至少包含一个“1”,则显示“1”,否则显示“0”

我当前的SQL是(简化的)

输出如下

  | ID | VALUE |
  |----|-------|
1 | 1  | 1     |
2 | 1  | 0     |
3 | 2  | 0     |
这是我想要的输出的一半

  | ID | VALUE |
  |----|-------|
1 | 1  | 1     |
2 | 2  | 0     |

因此,我的问题是:如何扩展当前SQL(或完全更改它)以获得所需的输出?

如果在FOREIGN\u VALUE列中只有0和1作为不同的值,那么使用Honeybager在注释中提到的max()函数将满足您的要求

SELECT
   ID,
   MAX(FOREIGN_VALUE) AS VALUE
FROM (SELECT
         ID,
        CASE WHEN FOREIGN_VALUE = 1
             THEN 1
             ELSE 0
        END AS FOREIGN_VALUE
      FROM TABLE, 
      FOREIGN_TABLE)
GROUP BY
ID;

假设
值始终为0或1,则可以执行以下操作:

select id, max(value) as value
from t
group by id;
如果
可以采用其他值:

select id,
       max(case when value = 1 then 1 else 0 end) as value
from t
group by id;

为什么不选择
MAX()
?您使用的是哪种产品?博士后?神谕“SQL”只是一种查询语言,而不是特定数据库产品的名称Structres@GummiBoat这里你不提供表,外来的表结构,这里可能只存在表结构。我不好,我想标准的SQL就足够了。我添加了Oracle标签。我在Oracle SQL Developer工作。表结构有点复杂,我不明白为什么它们会重要。我自己设置1和0,FOREIGN_VALUE=1不是最终SQL中的唯一条件,这就是为什么我在使用CASE时遇到麻烦。我认为MAX不是正确的方法,因为-正如我已经说过的-有多个条件来设置值行,我不能直接用MAX引用一列,除非有一种方法可以最大化我新创建的值列。请提及一些其他条件,以清楚了解您的需求。感谢编辑半径。@GummiBoat我认为您应该在问题中更加明确,以获得更准确的响应,以满足您的需要我编辑了我问题的SQL,我认为我无法提供更多的信息。如果我尝试实现上面的SQL,我不会得到任何结果,因为服务器一直在查询。实际上,我是个白痴,当我离开我的小组时,我忘记了处理这个问题。现在它起作用了。非常感谢。
select id,
       max(case when value = 1 then 1 else 0 end) as value
from t
group by id;