0

我正在寻找在 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
4

2 回答 2

4

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

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

请参阅带有演示的 SQL Fiddle

如果您的数据未标准化并且员工和类型在同一列中,那么您可以使用以下内容:

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

于 2012-12-14T20:44:16.050 回答
0

尝试这个:

select 
    left(EmpName, 11) + ' Total',
    SUM(hours)
from 
    emptab
WHERE
    hourstype in ('Regular', 'Overtime')
group by
    EmpName
于 2012-12-14T20:46:22.010 回答