如何统计每一条 comments 的记录?每个备注在备注列值中都有一个不同的数字.我需要根据备注内容对记录进行分组,而不是使用cid###.需要按备注分组,但每条备注都有一些CID的动态变量,不包括CID号需要分组

示例Remarks:

Remark1-cid11
Remark1-cid22
Remark1-cid33

组1的计数应为3

样本数据

Remark                Id    CreatedOn                        ProcessName
------------------------------------------------------------------------
Remark1-cid22          1    2023-12-27 18:02:54.4102746      P1
Remark2-cid23          2    2023-12-27 18:02:54.4102746      P1
Remark3-cid24          3    2023-12-27 18:02:54.4102746      P1
Remark4-cid25          4    2023-12-27 18:02:54.4102746      P1
Remark1-cid26          5    2023-12-27 18:02:54.4102746      P1
Remark2-cid27          6    2023-12-27 18:02:54.4102746      P1
Remark3-cid28          7    2023-12-27 18:02:54.4102746      P1
Remark4-cid29          8    2023-12-27 18:02:54.4102746      P1

期望输出

CreatedOn  Remark   Count   Group 
-----------------------------------
2023-12-27 Remark1   2      Group1
2023-12-27 Remark2   2      Group2
2023-12-27 Remark3   2      Group3
2023-12-27 Remark4   2      Group4 

我试过的查询

select 
    Remark, Count (Id) 
from 
    IPocumentRequests
group by 
    Remark
having 
    Remark like '%Remark1%' 
    or Remark like '%Remark2%' 
    or Remark like '%Remark3%'  
    or Remark like '%Remark4%'

输出

Remark        (No column Name)
------------------------------
Remark1 -cid11       1
Remark2 -cid22       1
Remark3-cid33        1
Remark4-cid44        1
Remark1-cid55        1
Remark2-cid66        1
Remark3-cid77        1
Remark4-cid88        1

推荐答案

判断这个解决方案,我使用了公用表表达式,它是处理 Big Data 的更快的方式.

WITH aa AS (
  SELECT 
    CONVERT(DATE, created_on) AS created_on,
    SUBSTRING(Remark, 1, CHARINDEX('-', Remark) - 1) AS Remark_modified,
    CASE
      WHEN Remark LIKE '%Remark1%' THEN 'group1'
      WHEN Remark LIKE '%Remark2%' THEN 'group2'
      WHEN Remark LIKE '%Remark3%' THEN 'group3'
      WHEN Remark LIKE '%Remark4%' THEN 'group4'
      ELSE Remark
    END AS Group_num
  FROM 
    your_table_name
)

SELECT 
  created_on,
  Remark_modified,
  Group_num,
  COUNT(*) AS count
FROM 
  aa
GROUP BY 
  created_on,
  Remark_modified,
  Group_num;

Sql相关问答推荐

如何计算帐户在SQL中随着时间的推移购买的SKU数量?

当有空单元格时,如何连接列

Access VBA SQL命令INSERT FOR MULTIME VALUE

SQL Select 最小优先级

在xml.Modify方法中使用子字符串和可能的替代方法

使用SQL数据库中的现有列派生或修改几个列

按两列分组,并根据SQL中的条件返回第三个列值

统计PostgreSQL中前10个最大大小表的行数

使用 union 的有序结果获取行数

将 json 列键映射到第二个表中的匹配列值

Postgres,使用 select 插入多个值

使用临时表判断记录是否存在 - 如果存在则执行相同的操作

获取多个开始-结束时间戳集之间经过的时间

根据不同日期标准分配组的逻辑

按所选的值将记录分组到不同的列中

PostgreSQL中如何提取以特定字符开头的字符串中的所有单词?

SQL 按 id 运行总计并受条件限制(在窗口上)

oracle中多行的跨日期范围的交集

Postgres 窗口函数未按预期工作

Oracle SQL 查询自行运行,但在包装到select count(*) from ()时失败