我目前的数据对于我想要做的事情看起来很糟糕。我有多个列构成位置ID,其中一列是位置描述。我的问题是,如果该位置是“容器”,则说明列包含容器ID而不是单词' Container'
在我的例子中,如果它是一个数字,那么它就是一个容器'
Location_desc | Qty
--------------------
Location A | 10
Location A | 10
Location B | 20
Location B | 20
ABC-123456 | 5
DEF-987654 | 5
我想总结一下qty列并按位置对它们进行分组,但我希望我的结果是这样的
Location | Total
----------------
Location A | 20
Location B | 40
Container | 10
答案 0 :(得分:1)
使用CASE
来修复位置:
select location, sum(qty) as total
from (select case when Location in ('Location A','Location B') then Location
else 'Container' end as location,
qty from tablename)
group by location
答案 1 :(得分:0)
使用长度和翻译的组合建议here
select location_name, sum(qty) from (
select decode(Length(TRANSLATE(Location_desc, ' +-.0123456789', ' ')),null,'Container',Location_desc) location_name, qty
from YOUR_TABLE) group by location_name
;
希望帮助你!