Sql server TSQL统计列中的出现次数
我有一个数据,每个员工的工作变动都有一行,有没有一种方法可以在不使用子查询的情况下计算一个人在下面经历的唯一工作变动Sql server TSQL统计列中的出现次数,sql-server,tsql,count,Sql Server,Tsql,Count,我有一个数据,每个员工的工作变动都有一行,有没有一种方法可以在不使用子查询的情况下计算一个人在下面经历的唯一工作变动 name job tim accountant tim electrician tim accountant joy boss joy boss rob sales rob mechanic rob teacher rob marketing name job jobcount tim accountant
name job
tim accountant
tim electrician
tim accountant
joy boss
joy boss
rob sales
rob mechanic
rob teacher
rob marketing
name job jobcount
tim accountant 3
tim electrician 3
tim accountant 3
joy boss 1
joy boss 1
rob sales 4
rob mechanic 4
rob teacher 4
rob marketing 4
<> >如果你想考虑一个子查询,我会怎么做:
CREATE TABLE #tmp(name varchar(10), job varchar(20))
INSERT INTO #tmp VALUES
('tim','accountant'),
('tim','electrician'),
('tim','accountant'),
('joy','boss'),
('joy','boss'),
('rob','sales'),
('rob','mechanic'),
('rob','teacher'),
('rob','marketing')
SELECT Name,Job,SUM(JobGrp) OVER(PARTITION BY Name) JobCnt
FROM
(
select Name,Job, CASE WHEN 1 = ROW_NUMBER() OVER(PARTITION BY Name,Job ORDER BY Job) THEN 1 ELSE 0 END JobGrp
from #tmp
) t
您是否考虑过使用
COUNT
?特别是有窗户的?你尝试了什么?为什么不起作用?不确定“窗口化”是什么意思?那是什么?我认为你的Tim工作数应该是2而不是3。考虑到你想做大量的工作,我不知道没有子查询你会怎么做。窗口中的COUNT函数不允许使用distinct。嗨,JMabee理想情况下,我会计算作业更改的数量。这是什么?谢谢JMabee,我将从这里开始:)