如何统计每条评论的记录数?每个备注在备注列值内都有不同的编号。我需要根据备注内容对记录进行分组,而不是使用
cid###
。需要按备注分组,但是每个备注都有一些cid的动态变量。不包括cid号需要分组
示例 -
Remarks
:
Remark1-cid11
Remark1-cid22
Remark1-cid33
Group1 的数量应为 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
检查这个解决方案,我使用了通用表表达式,这是处理大数据的更快方法。
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;
从备注栏中过滤出真正的备注,并对其进行分组:
select the_real_remark
, count(*)
from (
select left(remark, charindex('-', remark) - 1) as
the_real_remark
from YourTable
) as SubQueryAlias
group by
the_real_remark