SQL中的计算

时间:2012-12-14 20:41:08

标签: sql sql-server sql-server-2000

我正在寻找在SQL SERVER 2000上有效的答案!
我在SQL中有一个类似

的表
                         Jan hours  
    Employee 1 Regular      10
    Employee 1 Overtime     10
    Employee 1 Vacation     1
    Employee 2 Regular      15
    Employee 2 Overtime     15
    Employee 2 Vacation      1

什么是SQL查询,以便在同一个表中只有常规和加班时间有条目?因此,同一个表中的下两个条目看起来像

    Emplpyee 1 Total     20
    Emplpyee 2 Total     30

2 个答案:

答案 0 :(得分:4)

我不知道您的列名甚至表结构,但您可以使用以下使用聚合函数和GROUP BY

select emp, sum(hours) Total
from yourtable
where type in ('Regular', 'Overtime')
group by emp

请参阅SQL Fiddle with Demo

如果您的数据未规范化且员工和类型属于同一列,那么您可以使用以下内容:

select 
  replace(replace(emp, 'Regular', ''), 'Overtime', '') Emp,
  sum(hours) total
from yourtable
where emp like '%Regular%'
  or emp like '%Overtime%'
group by replace(replace(emp, 'Regular', ''), 'Overtime', '')

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

试试这个:

select 
    left(EmpName, 11) + ' Total',
    SUM(hours)
from 
    emptab
WHERE
    hourstype in ('Regular', 'Overtime')
group by
    EmpName