2014-05-12 5 views
0
Empcode Empname COmpany Department Question     Scale 
----------------------------------------------------------------------- 
1001 ABC  Comp1  IT  Development Opportunities 50 
1001 ABC  Comp1  IT  Goals and Targets Set  30 
1001 ABC  Comp1  IT  Feedback and Coaching  10 
1002 XYZ  Comp1  IT  Goals and Targets Set  60 
1002 XYZ  Comp1  IT  Feedback and Coaching  70 

La requête que j'ai essayé:Après requête EXEC Je veux aller plus loin

DECLARE @cols AS NVARCHAR(MAX) 
DECLARE @query AS NVARCHAR(MAX) 

SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(Question) 
       from TmpTest1 
     FOR XML PATH(''), TYPE 
     ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'') 

set @query = 'SELECT Empcode,Empname,Company,Department,' + @cols + ' 
     from 
     (
      select * 
      from TmpTest1 
     ) x 
     pivot 
     (
      max(scale) 
      for Question in (' + @cols + ') 
     ) p ' 

execute(@query) 

Après exercerai je veux revenir le jeu de résultats et aller plus loin. Comment fait-on ça?

Répondre

0

Si je comprends bien ce que vous demandez correctement, vous pouvez créer une table temporaire et placer le résultat dans une table temporaire où vous pouvez effectuer un traitement supplémentaire avant de renvoyer les résultats finaux.

+0

Oui, je l'ai eu Mais ce devrait être une table globale temporaire seulement alors je peux utiliser plus loin après la commande d'exécution. – user3071287

+0

Pour créer une table temporaire globale, précédez le nom de la table de deux chiffres au lieu d'un (## temp_tbl). La table globale sera supprimée automatiquement lorsque la session qui a créé la table se termine et que toutes les autres tâches ont cessé de les référencer. Vous pouvez envisager de créer une table régulière que vous pouvez vider chaque fois que vous avez terminé. – user3607525

Questions connexes