Sql server 2012 总和查询,日期之间,按员工分组
我有4个表格,结构如下:Sql server 2012 总和查询,日期之间,按员工分组,sql-server-2012,sum,aggregate,Sql Server 2012,Sum,Aggregate,我有4个表格,结构如下: SELECT Project.Name AS ProjectName, Task.Name AS TaskName, Employee.Name AS EmployeeName, SUM(Note.WorkDuration) FROM Note INNER JOIN Employee ON Note.ID_Employe
SELECT Project.Name AS ProjectName,
Task.Name AS TaskName,
Employee.Name AS EmployeeName,
SUM(Note.WorkDuration)
FROM
Note
INNER JOIN
Employee
ON
Note.ID_Employee = Employee.ID
INNER JOIN
Task
ON
Task.ID = Note.ID_Task
INNER JOIN
Project
ON
Task.ID_Project = Project.ID
WHERE
Note.WorkDate BETWEEN '01/05/2015' AND '08/05/2015'
GROUP BY
Task.Name, Project.Name, Employee.Name
ORDER BY
Employee.Name
ASC
更详细地说,项目由一组任务组成。员工可以向数据库中添加一个或多个注释,指定在任何给定日期用于该任务的时间量
我想找出每个员工在两个日期之间完成给定任务的总时间。我的第一次尝试如下:
SELECT Project.Name AS ProjectName,
Task.Name AS TaskName,
Employee.Name AS EmployeeName,
SUM(Note.WorkDuration)
FROM
Note
INNER JOIN
Employee
ON
Note.ID_Employee = Employee.ID
INNER JOIN
Task
ON
Task.ID = Note.ID_Task
INNER JOIN
Project
ON
Task.ID_Project = Project.ID
WHERE
Note.WorkDate BETWEEN '01/05/2015' AND '08/05/2015'
GROUP BY
Task.Name, Project.Name, Employee.Name
ORDER BY
Employee.Name
ASC
但是,这在填充的数据库中给出了错误的值。有人能帮我理解怎么做吗
其思想是以某种方式将此查询写入Excel表,项目/任务沿Y,员工姓名沿X,每个单元格包含完成任务的总时间
更新:如果我将BETWEEN子句更改为:
Note.[Date] BETWEEN '20150501' AND '20150508'
它似乎工作正常。所以我有一个日期格式问题。“因此,我开始为您这样做,并在选择记录时发现WHERE-BETWEEN子句工作不正常。我如上所述设定了日期,我也在那里得到了三月的记录。我是否对日期格式做了一些错误,以致于它正在以某种方式进行转换罗宾逊18分钟前” 这取决于您来自何处以及日期格式的默认设置;我猜您不是美国人(因为您似乎在'01/05/2015'中输入了月的前一天),但我打赌您的服务器格式设置为美国标准(月/日/年)。请参阅
最安全的做法是使用通用标准,就像您在第二次尝试中使用的那样:yyyymmdd(甚至更好:yyyy-mm-dd)。“因此,我开始为您这样做,并在选择记录时发现WHERE-BETWEEN子句工作不正常。我如上所述设定了日期,我也在那里得到了三月的记录。我是否对日期格式做了一些错误,以致于它正在以某种方式进行转换罗宾逊18分钟前” 这取决于您来自何处以及日期格式的默认设置;我猜您不是美国人(因为您似乎在'01/05/2015'中输入了月的前一天),但我打赌您的服务器格式设置为美国标准(月/日/年)。请参阅
最安全的做法是使用通用标准,就像您在第二次尝试中使用的那样:yyyymmdd(甚至更好:yyyy-mm-dd)。“因此,我开始为您这样做,并在选择记录时发现WHERE-BETWEEN子句工作不正常。我如上所述设定了日期,我也在那里得到了三月的记录。我是否对日期格式做了一些错误,以致于它正在以某种方式进行转换罗宾逊18分钟前” 这取决于您来自何处以及日期格式的默认设置;我猜您不是美国人(因为您似乎在'01/05/2015'中输入了月的前一天),但我打赌您的服务器格式设置为美国标准(月/日/年)。请参阅
最安全的做法是使用通用标准,就像您在第二次尝试中使用的那样:yyyymmdd(甚至更好:yyyy-mm-dd)。“因此,我开始为您这样做,并在选择记录时发现WHERE-BETWEEN子句工作不正常。我如上所述设定了日期,我也在那里得到了三月的记录。我是否对日期格式做了一些错误,以致于它正在以某种方式进行转换罗宾逊18分钟前” 这取决于您来自何处以及日期格式的默认设置;我猜您不是美国人(因为您似乎在'01/05/2015'中输入了月的前一天),但我打赌您的服务器格式设置为美国标准(月/日/年)。请参阅
最安全的做法是使用通用标准,就像您在第二次尝试中所做的那样:yyyymmdd(或者更好:yyyy-mm-dd).您的日期是包含的还是独占的?日期是包含的。您能在问题中粘贴一些匿名数据吗?您的查询看起来还可以。因此我开始为您这样做,并在选择记录时发现WHERE-BEVER子句工作不正确。我如上所述设置了日期,并且我也从中获得了3月份的记录。是吗对日期格式做了一些错误处理,导致它以某种方式被转换?字段[日期]DateTime2顺便说一句。你的日期是包含的还是独占的?日期是包含的。你能在问题中粘贴一些匿名数据吗?你的查询看起来还可以。所以我开始为你做这件事,当我选择记录时发现WHERE-BEVER子句工作不正常。我如上所述设置了日期,并且我从中获得了3月份的记录也是。我是否对日期格式做了一些错误,导致它以某种方式被转换?字段[日期]DateTime2顺便说一句。你的日期是包含的还是独占的?日期是包含的。你能在问题中粘贴一些匿名数据吗?你的查询看起来还可以。所以我开始为你做这件事,当我选择记录时发现WHERE-BEVER子句工作不正常。我如上所述设置了日期,并且我从中获得了3月份的记录也是。我是否对日期格式做了一些错误,导致它以某种方式被转换?字段[日期]DateTime2顺便说一句。你的日期是包含的还是独占的?日期是包含的。你能在问题中粘贴一些匿名数据吗?你的查询看起来还可以。所以我开始为你做这件事,当我选择记录时发现WHERE-BEVER子句工作不正常。我如上所述设置了日期,并且我从中获得了3月份的记录也是。我是否对日期格式做了一些错误,导致它以某种方式被转换?字段[日期]是DateTime2顺便说一句。我想补充你的答案。+1谢谢你斯图尔特和纳特拉斯给我指出了正确的方向。我想补充你的答案。+1谢谢你斯图尔特和纳特拉斯给我指出了正确的方向。我想补充你的答案。+1谢谢斯图尔特和纳特拉斯,谢谢你给我的建议告诉我正确的方向。我会为你的