SQL 2008-我需要计算给定时间范围内每个员工的行数
我有一个表格,上面有员工的每日总计和开始日期,我需要回顾3个月,看看员工工作了多少天 以下是我的sql查询:SQL 2008-我需要计算给定时间范围内每个员工的行数,sql,sql-server,Sql,Sql Server,我有一个表格,上面有员工的每日总计和开始日期,我需要回顾3个月,看看员工工作了多少天 以下是我的sql查询: SELECT EMPNO, CONVERT(VARCHAR(10), STARTDATE,101), ROW_NUMBER() OVER (ORDER BY PERSONNUM) AS 'ROWCOUNT' FROM EMPLOYEE WHERE STARTDATE BETWENN DATEADD(month, -3, GETDATE())
SELECT
EMPNO,
CONVERT(VARCHAR(10), STARTDATE,101),
ROW_NUMBER() OVER (ORDER BY PERSONNUM) AS 'ROWCOUNT'
FROM EMPLOYEE
WHERE STARTDATE BETWENN DATEADD(month, -3, GETDATE()) and GETDATE()
GROUP BY EMPNO,STARTDATE
ORDER BY EMPNO
结果
EMPNO STARTDATE ROWCOUNT
TEST108 09/13/2013 1
TEST108 09/16/2013 2
TEST108 09/17/2013 3
TEST108 09/19/2013 4
TEST109 09/04/2013 5
TEST109 09/05/2013 6
TEST109 09/06/2013 7
TEST110 09/03/2013 9
TEST110 09/04/2013 10
TEST110 09/05/2013 11
期望结果
EMPNO ROWCOUNT
TEST108 4
TEST109 3
TEST110 3
谢谢你,你能数一数吗
SELECT EMPNO, COUNT(EMPNO) AS [ROWCOUNT]
FROM EMPLOYEE
WHERE STARTDATE BETWEEN DATEADD(month, -3, GETDATE()) and GETDATE()
GROUP BY EMPNO
ORDER BY EMPNO
你不能数一数吗
SELECT EMPNO, COUNT(EMPNO) AS [ROWCOUNT]
FROM EMPLOYEE
WHERE STARTDATE BETWEEN DATEADD(month, -3, GETDATE()) and GETDATE()
GROUP BY EMPNO
ORDER BY EMPNO
试试这个-
SELECT EMPNO
, [ROWCOUNT] = COUNT(1)
FROM dbo.Employee
WHERE StartDate BETWEEN DATEADD(MONTH, -3, GETDATE()) AND GETDATE()
GROUP BY EMPNO
ORDER BY EMPNO --[ROWCOUNT] DESC
试试这个-
SELECT EMPNO
, [ROWCOUNT] = COUNT(1)
FROM dbo.Employee
WHERE StartDate BETWEEN DATEADD(MONTH, -3, GETDATE()) AND GETDATE()
GROUP BY EMPNO
ORDER BY EMPNO --[ROWCOUNT] DESC
试试这个
SELECT
EMPNO,COUNT(STARTDATE)
FROM EMPLOYEE
WHERE STARTDATE BETWEEN DATEADD(month, -3, GETDATE()) and GETDATE()
GROUP BY EMPNO
ORDER BY EMPNO
试试这个
SELECT
EMPNO,COUNT(STARTDATE)
FROM EMPLOYEE
WHERE STARTDATE BETWEEN DATEADD(month, -3, GETDATE()) and GETDATE()
GROUP BY EMPNO
ORDER BY EMPNO
您可以将此CTE与行号和计数*一起使用:
ROW_NUMBER为Partiton中的每一行返回一个数字,类似于GROUP BY EMPNO,并允许选择所有列,而无需聚合所有列。COUNT*OVER返回每个分区的总行数,这样您就可以得到所需的行数。我使用行编号只是为了删除重复项 您可以将此CTE与行数和计数*一起使用:
ROW_NUMBER为Partiton中的每一行返回一个数字,类似于GROUP BY EMPNO,并允许选择所有列,而无需聚合所有列。COUNT*OVER返回每个分区的总行数,这样您就可以得到所需的行数。我使用行编号只是为了删除重复项 一个员工是否可以有多行使用相同的起始日期,或者为什么要在EMPNO,STARTDATE上分组?一个员工是否可以有多行使用相同的起始日期,或者为什么要在EMPNO,STARTDATE上分组?选择:Betwenn-否则我同意此解决方案。谢谢。。更新了答案。您在选择:Betwenn中有一个输入错误-否则我同意此解决方案。谢谢。。更新了答案。