我有一个名为 ReportStats 的表格 表列是: ID , MemberId ,操作和 RecordId 。 该操作可以具有创建,更改或停用的值 我想要做的是计算每个 MemberId 的每个操作的数量 这是可能的吗?
答案 0 :(得分:4)
创建表格
CREATE TABLE #ReportStats (Id INT IDENTITY(1, 1), MemberId INT, [Action] VARCHAR(10))
插入一些示例数据
INSERT INTO #ReportStats VALUES (1, 'create'),
(1, 'create'),
(1, 'change'),
(1, 'deactivate'),
(1, 'change'),
(1, 'deactivate'),
(2, 'create'),
(2, 'change'),
(2, 'change'),
(2, 'change'),
(2, 'change'),
(2, 'deactivate')
简单的COUNT(*)
和GROUP BY
可以解决问题:
<强>查询强>
SELECT
MemberId,
Action,
COUNT(*) AS Cnt
FROM #ReportStats
GROUP BY MemberId, Action
ORDER BY MemberId
<强>输出强>
MemberId Action Cnt
1 change 2
1 create 2
1 deactivate 2
2 change 4
2 create 1
2 deactivate 1
答案 1 :(得分:1)
其他方法是使用count函数和OVER子句:
SELECT DISTINCT
MemberId,
Action,
COUNT(*) OVER (PARTITION BY MemberID,Action) as CntAction
FROM #ReportStats