[英]SQL Query to combine some rows
我当前查询的输出如下:
item number
car 5
bus 4
bicycle 7
kaikias 10
但是我需要根据是否是汽车来对项目进行分组。 但是此信息不在数据库中。 我应该明确地说在查询中汽车是机动车辆。 预期输出为:
item number
motor 9
others 17
如何通过行中不存在的某些属性来合并行?
谢谢
正确的方法是为此信息创建一个新表,将这些表连接起来并按类别分组。
否则,您可以对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
您只能根据数据库中的信息来查询和分组项目。 您的数据库不可能自己知道汽车是有马达的,自行车是没有马达的。
如果可能的话,我建议您添加一个新列,以保存此类信息。
编辑:
如果您只想指出已知值,可以尝试以下方法:
SELECT CASE WHEN (item = 'car' OR item = 'bus') THEN 'motor' ELSE 'others' END as item, ...
FROM yourTable
...
第一个参数是您的条件,第二个参数是您的true
值,第三个参数是false
的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.