2010-01-29 5 views
0

données ayant comme indiqué ci-dessousobtenir la sortie au format

ItemCode SalesPrice PricingLevel 
ITEM-000001 451.000000 Barons 
ITEM-000001 432.000000 Guild 

est-il un moyen d'obtenir la sortie suivante:

ItemCode  Barons  Guild 
ITEM-000001 451  432 
+0

De combien de PricingLevel avez-vous? Je peux voir 2 valeurs pour PricingLevel (Barons, Guild). Pourrait-il y avoir plus d'éléments dans cette liste? – shahkalpesh

+0

Seulement 2, ça fonctionne bien. –

Répondre

1
SELECT ItemCode, 
Sum(Case when PricingLevel = 'Barons' Then SalesPrice else 0 end) as Barons, 
Sum(Case when PricingLevel = 'Guild' Then SalesPrice else 0 end) as Guild 
FROM myTable 
GROUP BY ItemCode 
+0

Salut shahkalpesh, J'utilise votre requête parce que je pense qu'il est plus rapide que ce qui précède parce que dans votre requête il y a seulement un select & au-dessus de 3 sélections donc je pense qu'il est préférable d'utiliser votre solution. Merci beaucoup. –

0

Juste essayer cette (note: comme je ne sais pas votre nom de table , je l'ai appelé "Articles"):

SELECT DISTINCT I1.ItemCode, 
     (SELECT SalesPrice FROM Items I2 WHERE I2.ItemCode = I1.ItemCode AND I2.PricingLevel = 'Barons') Barons, 
     (SELECT SalesPrice FROM Items I3 WHERE I3.ItemCode = I1.ItemCode AND I3.PricingLevel = 'Guild') Guild 
FROM Items I1 

Pour ne pas montrer les zéros décimales, utilisez les touches suivantes:

SELECT DISTINCT I1.ItemCode, 
     (SELECT CAST(SalesPrice AS DECIMAL(10,0)) FROM Items I2 WHERE I2.ItemCode = I1.ItemCode AND I2.PricingLevel = 'Barons') Barons, 
     (SELECT CAST(SalesPrice AS DECIMAL(10,0)) FROM Items I3 WHERE I3.ItemCode = I1.ItemCode AND I3.PricingLevel = 'Guild') Guild 
FROM Items I1 
+0

Salut Tufo ça marche bien, mais est-ce que ça marche bien, c'est-à-dire le point de vue de la performance si j'ai des données énormes? –

+0

si vous avez seulement ces colonnes, donc ça va fonctionner, il sera 1 sélectionner pour toute la table plus 2 pour chaque élément, pas de problème là-bas. Mais si vous avez plus de colonnes, la performance peut être un problème. Combien de registres PricingLevel avez-vous? – Tufo

+0

Dans ce tableau, j'ai 15 colonnes, mais pricinglevel est fixé –

Questions connexes