Я надеюсь, что кто-то может мне помочь.Я пытаюсь перенести некоторые данные на SQL Server 2005 и не могу получить требуемые результаты.
Это моя текущая схема таблицы:
| ProductCode | AttributeName | AttributeValue |
| 1 | AttributeA | 10 |
| 1 | AttributeB | 20 |
| 2 | AttributeA | 30 |
| 2 | AttributeB | 40 |
| 3 | AttributeA | 50 |
Эторезультаты, которые я пытаюсь достичь:
| ProductCode | AttributeA | AttributeB |
| 1 | 10 | 20 |
| 2 | 30 | 40 |
| 3 | 50 | NULL |
Я знаю, что могу достичь этого результата с помощью следующего SQL:
SELECT DISTINCT ProductCode,
(SELECT AttributeValue
FROM attributes
WHERE ProductName = 'AttributeA' AND ProductCode=a.ProductCode) AttributeA,
(SELECT AttributeValue
FROM attributes
WHERE ProductName = 'AttributeB' AND ProductCode=a.ProductCode) AttributeB,
FROM attributes a
Хотя этот SQL действительно дает результат, яЭто очевидно, что он не динамический (на самом деле у меня есть не только больше типов атрибутов, но и у разных продуктов разные наборы атрибутов), и он также сканирует таблицу 3 раза.Это также кошмар обслуживания.
Я пытался использовать функциональность PIVOT SQL Server, но безуспешно.
Кто-нибудь может помочь?