2010-11-29 31 views
0

J'essaie la fonction pivot dans SQL Server 2005 pour la première fois et je cours dans un mur pour obtenir le jeu de résultats que je souhaite. J'ai deux tables defects et employees. J'essaie d'obtenir tous les défauts pour les employés dans ma table et je ne me soucie pas des défauts attribués à des personnes autres que celles qui sont entrées dans la table de mes employés (je pense à joindre, je n'ai pas essayé un sous-question encore mais ne pense pas que je vais devoir)Aide de la requête pivot SQL Server 2005

Je veux obtenir les résultats regroupés par (pivoté sur) defects.severity domaine. Les champs que je veux dans le jeu de résultats sont les suivants: severity, assigned to, employee.name, fix data

Fondamentalement, je veux rouler les données en fonction de la gravité et de montrer un compte en fonction des niveaux de gravité des défauts

Voici mes tableaux:

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 de défaut] [float] NULL' ne semble pas être le meilleur choix pour une clé primaire (ce que je suppose qu'il devrait être) pour cette table ..... pourquoi ** float ** ?? Pourquoi ** NULL ** ?? Pourquoi un espace dans le nom de domaine ??? Je préférerais '[DefectID] INT NOT NULL IDENTITY (1,1)' dans tous les cas ... –

+0

Voulez-vous PIVOT vos résultats sur la gravité? (comme dans les différentes valeurs de gravité doivent être différentes colonnes de votre jeu de résultats), ou voulez-vous simplement GROUP par gravité ?. En outre, je ne vois pas de colonne [Fix data], juste [FixDate] – Lamak

+0

Désolé, mais dès que j'ai vu que vous aviez des espaces intégrés dans vos noms de colonnes, j'ai pensé "je ne travaille pas sur ça". –

Répondre

0

je l'ai eu avec ce 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 

remercie tous

+0

Vous devriez marquer ceci comme la réponse acceptée, alors les futurs visiteurs sauront que ceci est résolu. – Taryn