SQL-如何组合行?

时间:2017-07-08 19:25:48

标签: sql hiveql

我需要搜索大约十几个设备,其中一些设备有变体。例如,如果我使用GROUP BY设备,它看起来像这样:

Device Amount
X1     10  
X2     2
X2-A   6
X3     9
X3-A   3
X4     8
X5     11
etc...

就个人而言,我并不关心变体,因此在搜索之后我必须进入Excel并手动添加X2和X2A的行。有没有办法在搜索查询中组合它们?

2 个答案:

答案 0 :(得分:2)

好吧,如果它们总是两个字符,你可以这样做:

select substr(Device, 1, 2) as Device, sum(Amount)
from t
group by substr(Device, 1, 2);

如果表达式的长度可变,则可以使用更复杂的字符串表达式。

答案 1 :(得分:0)

如果变体以' - '开头,我们会删除' - '

右侧的文字

<强>的PostgreSQL

SELECT SUBSTRING(Device FROM  1, (LENGTH(Device)-POSITION('-' IN Device))) AS DeviceSub, sum(Amount)
FROM t
GROUP BY DeviceSub;

<强>的Oracle

SELECT SUBSTR(Device, INSTR(Device, '-', 1), (LENGTH(Device)-INSTR(Device, '-', 1))) AS DeviceSub, sum(Amount)
    FROM t
    GROUP BY DeviceSub;