我当前查询的输出如下:
item number
car 5
bus 4
bicycle 7
kaikias 10
但我需要根据是否是机动车对物品进行分组。但是这些信息不在DB中。我应该明确地说汽车是查询中的一辆汽车。预期产出是:
item number
motor 9
others 17
如何通过不在DB中的某些属性组合行?
感谢
答案 0 :(得分:2)
正确的方法是为此信息创建一个新表,按类别加入表和组。
否则你可以用in和case来做类似的事情,但它不能很好地扩展,而且很容易。
像这样:
select
case when item in ('motor1', 'motor2', '...') then 'motors' else 'others' end item,
count(*) number
from
table
group by
case when item in ('motor1', 'motor2', '...') then 'motors' else 'others' end
答案 1 :(得分:2)
您只能通过数据库中的信息查询和分组项目。您的数据库本身不可能知道汽车有电机或自行车没有电机。
如果可能,我建议您添加一个新列,以保存此类信息。
编辑:
如果您只想表明已知值,可以这样试试:
SELECT CASE WHEN (item = 'car' OR item = 'bus') THEN 'motor' ELSE 'others' END as item, ...
FROM yourTable
...
第一个参数是您的条件,第二个参数是true
的值,第三个参数是false
的值。