Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server TSQL统计列中的出现次数_Sql Server_Tsql_Count - Fatal编程技术网

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,我将从这里开始:)