想象一个看起来像这样的表
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
任何人都可以帮我吗?
答案 0 :(得分:5)
假设“组合标志”意味着“或标志在一起”,这样如果任何行的结果为1,则结果为1,只需执行GROUP BY
MAX
SELECT cust,
MAX(flag1) flag1,
MAX(flag2) flag2
FROM table_name
GROUP BY cust
答案 1 :(得分:1)
您可以使用SUM
和SIGN
的组合。
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>