select sum(col1), distinct col2 from table group by col1;
以上查询失败。如果组中的所有值都是唯一的,是否有替代方法可以获得不同的值?
对于ex 1(如果col2中的值相同):
|col1 | col2 |
|-----|------|
|1 | 2 |
|1 | 2 |
输出应为:
|col1(sum) |col2 |
|----------|-----|
| 2 | 2 |
ex 2(如果col2中的值不同):
|col1 | col2 |
|-----|------|
|1 | 2 |
|1 | 3 |
输出应为:
|col1(sum) | col2 |
|----------|------|
| 2 |'...' |
答案 0 :(得分:0)
执行GROUP BY col1
。
如果只有一个不同的col2值(对于该col1组),则有一个case
表达式返回col2。)Othwerwise返回-999(或您选择的任何其他值)。
select sum(col1),
case when count(distinct col2) = 1 then max(col2)
else -999
end
from t
group by col1
答案 1 :(得分:0)
DISTINCT
不是应用于单个列的操作 - 它适用于所有列,并且在聚合的上下文中没有意义。
输出应为:
col1(sum) col2 2 '...'
您可以使用case语句来获取所需的输出,但您需要使case语句中的所有输出具有相同的数据类型;所以,如果你想要...
时有多个值,那么你需要将你的数字转换成一个字符串:
SELECT SUM( col1 ),
CASE
WHEN COUNT( DISTINCT col2 ) = 1
THEN TO_CHAR( MAX( col2 ) )
ELSE '...'
END
FROM your_table
GROUP BY col1