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 クエリは何でしょうか? したがって、同じテーブルの次の 2 つのエントリは次のようになります。

    Emplpyee 1 Total     20
    Emplpyee 2 Total     30
4

2 に答える 2

4

列名やテーブル構造さえわかりませんが、集計関数と を使用する次のものを使用できます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 に答える