我在SQL Server
中有一个作业工作流表,其中包含页面上的任务start_time和end_time以及该页面的总分。
特定日期的Page start_time和end_time将重复,即员工将在该页面上启动和停止任务多次,如下所示
我的查询
SELECT DISTINCT tu.user_id,tjd.job_id, tjd.job_case_no,isnull(tu.first_name,tu.user_name)Name,(Count(tjw.total_pages)) total_pages,tjd.job_status_id_fk,tjd.drawing_type_id_fk,SUM(tjw.total_points) Points
FROM dbo.tbl_job_workflow tjw
LEFT JOIN dbo.tbl_user tu ON tu.user_id = tjw.user_id_fk
LEFT JOIN dbo.tbl_job_details tjd ON job_id=job_id_fk
WHERE isnull(tjd.job_case_no,'')<>'' AND tjw.start_time>='2016-06-28' AND tjw.end_time<='2016-06-28'
GROUP BY tjd.job_case_no,tu.first_name,tu.user_name,tu.user_id,tjd.job_id,job_status_id_fk,tjd.drawing_type_id_fk
示例输出
user_id job_id job_case_no Name total_pages Points
4 298 Testcase_17062016_0244PM Emp1 1 6
4 346 TestCase-01 Emp1 2 4
27 346 TestCase-01 Emp2 11 11
27 350 5435435 Emp2 1 1
4 350 5435435 Emp1 5 5
在以上针对uemployee Emp2的案例TestCase-01的输出中,积分应该是10而不是11
我需要在一天内获得不同页面的点数总和。 即如果一个有4页的工作没有被处理过,第1页有2个点已经在同一天工作了两次,那么那天的积分总和应该是2而不是4
请有人指导我如何根据上述条件获得总和
答案 0 :(得分:0)
我通过将变量传递给函数
来获取Sum;WITH CTE_Table
AS
(
SELECT DISTINCT tjw.total_points,tjw.total_pages
FROM dbo.tbl_job_workflow tjw WHERE USER_id_fk=@user_id and job_id_fk=@job_id
)
SELECT SUM(total_points) FROM CTE_Table