2014-07-14 5 views
0

Normalement, quand je fais affaire avec SQL (rarement), j'utilise seulement SELECT * FROM instruction tout le temps. Mon travail principal est de travailler avec Excel en tant qu'analyse. Cependant, je sens que mon efficacité peut être grandement améliorée avec la programmation, j'ai commencé à apprendre de la programmation (VBA pour Excel). Aujourd'hui, je veux faire quelque chose de plus qui essaie de transformer une table en utilisant Microsoft SQL comme ci-joint l'image ci-dessous.Table Transformer avec SQL

SELECT Part_Number as [Part Number], SubPart, Quantity FROM.... 

Bascially, le numéro de pièce peut être jusqu'à 200, sous-partie a seulement 3 Type Sous-I, Sous-II, et sous-III, la quantité peut être quelque chose. J'ai besoin d'aide pour transformer la table comme le montre

enter image description here

+0

Avez-vous besoin de mettre à jour les en-têtes de votre deuxième table (transformée)? Sinon, je ne comprends pas. –

+0

@ Dave.Gugg, je l'ai mis à jour désolé pour le manque – user2103670

Répondre

1

Ecrire requête T-Sql dynamique:

DECLARE @columns NVARCHAR(MAX)  
     ,@sql NVARCHAR(MAX) 

SET @columns = N'' 
--Get column names for entire pivoting 
SELECT @columns += N', ' + QUOTENAME(SpreadCol) 
    FROM (select distinct Part_Number as SpreadCol 
     from test 
     ) AS T 
--select @columns 
SET @sql = N' 
SELECT SubPart, ' + STUFF(@columns, 1, 2, '') + ' 
FROM 
(select SubPart , Part_Number as SpreadCol , Quantity 
from test) as D 
PIVOT 
(
    sum(Quantity) FOR SpreadCol IN (' 
    + STUFF(REPLACE(@columns, ', [', ',['), 1, 1, '') 
    + ') 
) AS Pivot1 
' 
--select @sql 

EXEC sp_executesql @sql 

Check Fiddle Demo here..

+0

merci beaucoup. Je viens de tester le SQL via Fiddle Demo et a très bien fonctionné. Je vais essayer d'étendre la syntaxe pour l'adapter à mon problème qui est beaucoup plus complexe mais similaire. – user2103670

1

Il semble que vous devez utiliser Pivotant.


Se reporter à:

Using PIVOT and UNPIVOT

Simple Way To Use Pivot In SQL Query

+0

merci pour le lien, je comprends fondamentalement maintenant. Cependant, les problèmes sont les suivants: (1) Si je ne connais pas le numéro de pièce (2) Combien de pièces Numéro de pièce – user2103670

+0

@ user2103670 Utiliser le pivotement dynamique –

Questions connexes