Ceci est ma requête de sélection régulière:manière correcte de convertir les lignes à colonnes de requêtes SQL
SELECT [category], [price], [company]
FROM [prices]
INNER JOIN [company] AS [co] ON [co].[company] = [pr].[company]
WHERE [co].[id] IN (1,2,3);
Le résultat est:
category | price | company
---------+-------+-------------
Srv | 1200 | CoA
Srv | 2800 | CoB
EQ | 5400 | CoA
Deduc | 400 | CoA
Deduc | 150 | CoB
Et je besoin de ce résultat:
PriceASrv | PriceBSrv | PriceAEQ | PriceBEQ | PriceADeduc | PriceBDeduc
-----------+-----------+----------+----------+-------------+-------------
1200 | 2800 | 5400 | NULL | 400 | 150
Il me semble que j'ai besoin de deux fois PIVOT, ai-je raison? Est-ce que quelqu'un a une idée?
Avez-vous un nombre fixe de colonnes ou est-il dynamique? –
vous n'avez pas besoin de pivoter deux fois, mais comme vous le voyez dans les exemples ci-dessous, vous devez concaténer les valeurs 'company' et' category'. Il semble également que vous ayez besoin de toutes les catégories et de toutes les sociétés, lorsque le résultat est manquant. Avez-vous une table 'company' avec une ligne par' company' et une table 'category' avec une ligne par' category'? – Beth
Le langage SQL ** vraiment ** doit être capable de savoir combien de colonnes et quel type à la compilation, avant que la requête ne s'exécute réellement sur n'importe quelle donnée. Si vous ne pouvez pas faire cela, vous devrez faire votre pivot en deux étapes via SQL dynamique (où la première étape détermine la réponse à cette question "combien de colonnes") ou faites votre pivot dans le code client. –