如何查找SQL列中按另一列分组的子字符串的出现次数?

如何查找SQL列中按另一列分组的子字符串的出现次数?,sql,string,group-by,count,pivot,Sql,String,Group By,Count,Pivot,我对SQL非常陌生,到处都在搜索我的问题的答案,但找不到一个完全有效的答案 我有一个表,一列是订单ID,另一列是订单注释。我试图在Order notes列中查找每个ID的单词出现次数 ORDERID | ORDER NOTE ------------------------------------------------ 357 | gardening shoes 213 | gardening hose 213

我对SQL非常陌生,到处都在搜索我的问题的答案,但找不到一个完全有效的答案

我有一个表,一列是订单ID,另一列是订单注释。我试图在Order notes列中查找每个ID的单词出现次数

ORDERID        |   ORDER NOTE
------------------------------------------------
357            |   gardening shoes
213            |   gardening hose
213            |   garden rake
178            |   rake shoes hose
我想在数据库中搜索“garden”实例的结果如下

ORDERID        |   COUNT
------------------------------------------------
357            |   1
213            |   2           
178            |   0
我可以单独计算每个部分,如何按ORDERID分组,以及如何获取表中的子字符串,但似乎无法正确组合它们


提前感谢您的帮助

您可以执行条件聚合:

select orderid, sum(case when order_note like '%garden%' then 1 else 0 end) cnt
from mytable
group by orderid

orderid | cnt ------: | --: 178 | 0 213 | 2 357 | 1 orderid | cnt ------: | --: 178 | 0 213 | 2 357 | 1
注意:如果您运行的是MySQL,则条件和可以简化为
sum(顺序注释如'%garden%')

请使用您使用的数据库标记您的问题:MySQL、oracle、sql server。。。?