2016-06-25 5 views
0

現在、私はそれにSQL Serverデータベースを持つプロジェクトに取り組んでいます。私はいくつかのクエリに問題があります。SQL Server:ビューまたはプロシージャを作成しますか?

現在のテーブル::私はテーブルを持っている

Month | Year | EmpID | Salary 
------------------------------------ 
    1   2016  123  100 
    2   2016  123  120 
    3   2016  123  110 
    4   2016  123  150 
    1   2016  456  200 
    2   2016  456  210 
    3   2016  456  225 
    4   2016  456  220 

をそして私はこのような結果で何か作りたい:クエリテーブルの後

を:

EmpID | Salary1 | Salary2 | Salary3 | Salary4 
123   100   120   110  150 
456   200   210   225  220 

注意:月のテーブルに基づいて給与テーブルを命名するのでSalary12

どのようなクエリを入力する必要がありますか?このためにビューまたはストアドプロシージャを作成する必要がありますか?

答えて

1

選択肢は、ビュー、ストアドプロシージャ、またはストアドファンクションです。ストアドプロシージャを使用する理由はありません。結果セットは、別のクエリで使用できる場合にはるかに便利だと思います。

結果にはpivotまたは条件付き集計のいずれかを使用できます。表示:

create view v_current as 
    select c.empid, 
      max(casewhen c.month = 1 then salary end) as salary_01, 
      max(casewhen c.month = 2 then salary end) as salary_02, 
      . . . 
      max(casewhen c.month = 12 then salary end) as salary_12 
    from current c 
    where c.year = year(getdate()) 
    group by c.empid; 

注:彼らは、列名の非常に悪い選択であるようmonthyearは、SQL Serverでキーワードです。これらの列の別の名前を見つける必要があります。

+0

はい、実際には実際の名前はBulan for MonthとTahun for Yearです。私は読んでいる人が理解するようにそれを簡単にするためにそれを変更するだけです。 Btw、何からの選択で '現在の'使用ですか?私はエラーがあると言った不適切な構文は、キーワード 'Current'の近くに –

+1

@EndyMooduto ...それはテーブル名であることを意味します。 –

関連する問題