繁体   English   中英

SQL查询合并一些行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM