2010-11-29 21 views
0

私は、SQL Server 2005のピボット機能を初めて試しています。SQL Server 2005のピボットクエリのヘルプ

私は2つのテーブルdefectsemployeesを持っています。私はemployeeテーブルの従業員のためのすべての欠陥を取得しようとしていると私は従業員のテーブルに入力されているもの以外の人に割り当てられた欠陥について気にしない(私はそれに参加すると思っている、私はまだサブクエリが必要だとは思わない)

結果をグループ化するには、defects.severityフィールドをピボットする必要があります。私は、結果セットにするフィールドは、以下のとおりです。severity, assigned to, employee.name, fix data

は基本的に私は重症度に応じてデータをロールアップし、ここで欠陥

の重大度に基づいて、カウントを表示したい私のテーブルです:

CREATE TABLE [dbo].[Employees] 
(
    [EmployeeId] [int] NOT NULL, 
    [ManagerId] [int] NULL, 
    [NTID] [nvarchar](50) NOT NULL, 
    [FirstName] [nvarchar](50) NOT NULL, 
    [LastName] [nvarchar](50) NOT NULL, 
    [FullName] [nvarchar](100) NOT NULL, 
    [ReportingGroup] [nchar](10) NOT NULL, 
    [Added] [datetime] NOT NULL, 
    [LastUpdate] [datetime] NOT NULL, 
    [UpdateBy] [nvarchar](50) NOT NULL 
) 

CREATE TABLE [dbo].[defects] 
(
    [Defect ID] [float] NULL, 
    [SubSystem] [nvarchar](255) NULL, 
    [Status] [nvarchar](255) NULL, 
    [Severity] [nvarchar](255) NULL, 
    [FixDate] [nvarchar](255) NULL, 
    [Assigned To] [nvarchar](255) NULL, 
    [Summary] [nvarchar](255) NULL, 
    [Product List] [nvarchar](255) NULL, 
    [Development Type] [nvarchar](255) NULL, 
    [Defect Category] [nvarchar](255) NULL, 
    [Defect Cause] [nvarchar](255) NULL, 
    [Est Ready for Retest] [nvarchar](255) NULL, 
    [Fix Stage] [nvarchar](255) NULL, 
    [Planned Fix in Deployment Event] [nvarchar](255) NULL, 
    [Planned Fix in Event Mgmt Group] [nvarchar](255) NULL, 
    [Est Fixed Date] [nvarchar](255) NULL, 
    [Other Owner] [nvarchar](255) NULL 
) 
+1

を '[不具合ID] [浮動小数点] NULLは、そのテーブルの主キー(私はそれがあるはずだと思います)に最適な選択肢ではないようです.....なぜ**浮動**?なぜ** NULL **?なぜフィールド名のスペース???私はすべての場合に '[DefectID] INT NOT NULL IDENTITY(1,1)'を好むでしょう... –

+0

Severityで結果をPIVOTしますか? (重大度の異なる値は結果セットの異なる列である必要があります)、または単に重大度別にGROUPしますか?また、[Fix data]列は表示されません。[FixDate] – Lamak

+0

申し訳ありませんが、あなたの列名にスペースを埋め込むとすぐに、私は「これについては何もしません」と考えました。 –

答えて

0

私はこのSQLでそれを得た:

select [Assigned To], [1-Urgent],[2-High],[3-Medium],[4-Low] 
from (select [assigned to],[Business Severity] from defects where [assigned to] is not null) D 
pivot 
(count([Business Severity]) for [Business Severity] in ([1-Urgent],[2-High],[3-Medium],[4-Low])) V 

おかげで、すべての

+0

これを受け入れられた回答としてマークし、将来の訪問者はこれが解決されたことを知る必要があります。 – Taryn