Oracle / SQL - 在关键字段上组合记录

时间:2012-03-01 17:07:59

标签: sql oracle

想象一个看起来像这样的表

CUST    FLAG1   FLAG2
---------------------
1234    1       0
1234    1       1
1234    1       0
1234    0       1
5678    1       0
5678    1       0
9012    0       1

我想要做的是按cust字段分组并组合标志(本质上是布尔值)所以我会得到以下结果

CUST    FLAG1   FLAG2
---------------------
1234    1       1
5678    1       0
9012    0       1

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:5)

假设“组合标志”意味着“或标志在一起”,这样如果任何行的结果为1,则结果为1,只需执行GROUP BY MAX

SELECT cust,
       MAX(flag1) flag1, 
       MAX(flag2) flag2
  FROM table_name
 GROUP BY cust

答案 1 :(得分:1)

您可以使用SUMSIGN的组合。

SQL> SELECT   cust
  2  ,        SIGN(SUM(flag1)) flag1
  3  ,        SIGN(SUM(flag2)) flag2
  4  FROM     t
  5  GROUP BY cust
  6  ORDER BY cust
  7  ;

CUST      FLAG1      FLAG2
---- ---------- ----------
1234          1          1
5678          1          0
9012          0          1
9999          0          0

SQL>