我需要搜索大约十几个设备,其中一些设备有变体。例如,如果我使用GROUP BY设备,它看起来像这样:
Device Amount
X1 10
X2 2
X2-A 6
X3 9
X3-A 3
X4 8
X5 11
etc...
就个人而言,我并不关心变体,因此在搜索之后我必须进入Excel并手动添加X2和X2A的行。有没有办法在搜索查询中组合它们?
答案 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;