Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 2008-我需要计算给定时间范围内每个员工的行数_Sql_Sql Server - Fatal编程技术网

SQL 2008-我需要计算给定时间范围内每个员工的行数

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())

我有一个表格,上面有员工的每日总计和开始日期,我需要回顾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()) 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中有一个输入错误-否则我同意此解决方案。谢谢。。更新了答案。