2010-11-29 5 views
0

Ich versuche die Pivot-Funktion in SQL Server 2005 zum ersten Mal und läuft in eine Wand, um die Ergebnismenge, die ich wünsche.SQL Server 2005-Pivot-Abfrage-Hilfe

Ich habe zwei Tabellen defects und employees. Ich versuche, alle Defekte für Angestellte in meiner employee Tabelle zu bekommen, und ich kümmere mich nicht um irgendwelche Defekte, die Leuten außerhalb von denen zugeteilt werden, die in meiner Angestelltentabelle eingegeben werden (ich denke, sich daran anzuschließen, habe ich a Unterabfrage noch, aber glaube nicht, dass ich muss)

Ich möchte Ergebnisse gruppiert von (geschwenkt auf) defects.severity Feld. Die Felder, die ich in der Ergebnismenge wollen, sind: severity, assigned to, employee.name, fix data

Grundsätzlich ich die Daten nach Schwere aufrollen wollen und zeigen eine Zählung basierend auf den Schweregrad von Fehlern

Hier meine Tabellen sind:

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

'[ Defect ID] [float] NULL' scheint nicht die beste Wahl für einen Primärschlüssel zu sein (was ich annehmen sollte) für diese Tabelle ..... warum ** float ** ?? Warum ** NULL ** ?? Warum ein Leerzeichen im Feldnamen ??? Ich würde in allen Fällen '[Fehler-ID] INT NICHT NULL-IDENTITÄT (1,1)' bevorzugen. –

+0

Möchten Sie Ihre Ergebnisse auf Schweregrad PIVOT? (Wie in den verschiedenen Schweregraden sollten unterschiedliche Spalten der Ergebnismenge sein), oder wollen Sie einfach GROUP nach Schweregrad? Außerdem sehe ich keine [Fix data] -Spalte, nur [FixDate] – Lamak

+0

Sorry, aber sobald ich gesehen habe, dass Sie Leerzeichen in Ihren Spaltennamen hatten, dachte ich "auf keinen Fall arbeite ich daran". –

Antwort

0

ich habe es mit diesem 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 

dankt allen

+0

Sie sollten dies als akzeptierte Antwort markieren, dann werden zukünftige Besucher wissen, dass dies gelöst ist. – Taryn