Sql表关系和明显计数

时间:2014-08-28 09:38:09

标签: sql database count

我有两张桌子:

1- Personale

  • 名称
  • Persoanl_ID

2- Presenze

  • Persoanl_ID
  • Work_Hours
  • Holiday_Hours

我想像每个月一样计算每个不同员工的Work_Hours和Holiday_Hours,如下表所示。 我想选择2个月之间的时间段。例如来自1月份的' 01到3月' 03

Persoanl_ID |名称|月| Work_Hours | Holiday_Hours | TotalWork_Hours | ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
J12345678K |约翰| __ 07 __ |的 _____ 150 __ |的 ________ 08 __ |的 __________ 142 __ | ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
J12345678K |约翰| __ 08 __ |的 _____ 144 __ |的 _________ 0 __ |的 __________ 144 __ | ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
TOTAL ____________ 2 ___ |的 ____ 294_ | __________ 8 | __________ 288

你能帮帮我吗?

3 个答案:

答案 0 :(得分:0)

如果你的意思是计算小时数,那么你可以使用下面的SQL查询:

select distinct a.Personal_ID ,a.Name, b.Month, Sum (b.Work_hours),Sum (b.Holiday_hours),Sum (b.Work_hours)+ Sum (b.Holiday_hours) As TotalWork_hours 

from Personale as a , Presenze as b 

where a.Persoanl_ID = b.Persoanl_ID 

Group By b.Month

此查询将为您提供每个月的结果,如果您想根据需要拆分日期我更喜欢使用DateTime数据类型,这将更容易按日期过滤

答案 1 :(得分:0)

试试这个:

select p.Persoanl_ID,
       p.Name,
       pz.Month,
       sum(pz.Work_Hours)    as Work_Hours,
       sum(pz.Holiday_Hours) as Holiday_Hours,
       sum(pz.Work_Hours) + sum(pz.Holiday_Hours) as Total_Hours 
from Personale p, Presenze pz 
where p.Persoanl_ID = pz.Persoanl_ID
  and pz.Month between '01' and '03'
group by p.Persoanl_ID, p.Name, pz.Month;

答案 2 :(得分:0)

由于您希望仅查看特定时期的结果,我认为以下查询可以给您答案:

SELECT b.Persoanl_ID Persoanl_ID ,a.Name Name, b.Month Month, b.Work_Hours 
Work_Hours,   b.Holiday_Hours Holiday_Hours,
(b.Work_hours  + b.Holiday_hours) as TotalWork_Hours
FROM Personale a INNER JOIN Presenze b
ON a.Persoanl_ID = b.Persoanl_ID 
WHERE b.Month BETWEEN 01 AND 03
GROUP BY b.Personal_ID , a.Name , b.Month , b.Work_Hours , b.Holiday_Hours ;