我有如下数据
| 金额|通货|投资者关系|
| --------------|--------------|--------------|
| 二百五十|美元|科伊维斯特岛|
| 0|英镑|科伊维斯特岛|
| 八六零|美元|平行|
| 0|英镑|平行|
| 一百二十一|美元|PSLO|
| 五|零|PSLO|
我需要输出如下
| 金额|通货|投资者关系|
| --------------|--------------|--------------|
| 二百五十|英镑|科伊维斯特岛|
| 八六零|英镑|平行|
| 一百二十六|美元|PSLO|
即方案-我想俱乐部/组的投资者和总金额和货币领域应该是当其美元或空它应该是美元或当其英镑或美元它应该显示英镑。
查询不起作用:
select sum(Amount)
case when currency in ('USD' , NULL ) then 'USD'
else currency end as c1, Investors
from table
group by c1 , Investors;
尝试:
select sum(Amount)
case when currency in ('USD' , NULL ) then 'USD'
else currency end as c1, Investors
from table
group by c1 , Investors;
2条答案
按热度按时间1cosmwyk1#
在这种情况下,你可以使用
sum
来表示金额,min
来表示货币。演示here。
ac1kyiln2#
您可以使用
row_number()
来进行优先级排序:当一个投资者有多行数据时,首先是“英镑”,然后是“美元”,然后是其他值(这里是
null
)。您可以轻松地调整case
表达式,以考虑更多货币或不同的优先级顺序。