Мне нужно преобразовать указанные ниже строки таблицы в столбцы, используя сводную таблицу (динамический столбец), где в таблице Номер статьи, Название статьи, Код каталога являются фиксированными столбцами. Ваша помощь будет высоко оценена

ArticleNumber   ArticleName CatalogCode AttributeName   AttributeValue
s123              abc         1          SportsCategory     Rakesh
s123              abc         1          Brand              Amar
s123              abc         1          ProductDivision    Ball
s123              abc         1          MarketingDivision  Boss
s222              XYZ         1          SportsCategory     Rakesh5
s222              XYZ         1          Brand              Red
s222              XYZ         1          ProductDivision    blue
s222              XYZ         1          SportsCategory     Rakesh8

OutPut:

ArticleNumber   ArticleName CatalogCode SportsCategory  Brand   ProductDivision MarketingDivision
s123             abc          1          Rakesh         Amar     Ball           Boss
s222             abc          1          Rakesh5        Red      blue           Rakesh8
-1
Amardeep P 24 Фев 2016 в 16:26

2 ответа

Лучший ответ

Это простой стержень

DECLARE @Table1 TABLE 
    (Article varchar(4), Name varchar(3), Code int, Attribute varchar(17), AttributeValue varchar(7))
;

INSERT INTO @Table1
    (Article, Name, Code, Attribute, AttributeValue)
VALUES
    ('s123', 'abc', 1, 'SportsCategory', 'Rakesh'),
    ('s123', 'abc', 1, 'Brand', 'Amar'),
    ('s123', 'abc', 1, 'ProductDivision', 'Ball'),
    ('s123', 'abc', 1, 'MarketingDivision', 'Boss'),
    ('s222', 'XYZ', 1, 'SportsCategory', 'Rakesh5'),
    ('s222', 'XYZ', 1, 'Brand', 'Red'),
    ('s222', 'XYZ', 1, 'ProductDivision', 'blue'),
    ('s222', 'XYZ', 1, 'SportsCategory', 'Rakesh8')
;

Select Article, Name, Code, [SportsCategory],[Brand],[ProductDivision],[MarketingDivision] from (
select Article, Name, Code, Attribute, AttributeValue from @Table1)T
PIVOT (MAX(AttributeValue) FOR Attribute IN ([SportsCategory],[Brand],[ProductDivision],[MarketingDivision]))P
0
mohan111 24 Фев 2016 в 13:34
SELECT *
FROM
(
  SELECT ARTICLE, NAME, CODE, ATTRIBUTENAME, ATTRIBUTEVALUE
  FROM #TABLE1
) D
PIVOT
(
  MAX(ATTRIBUTEVALUE)
  FOR ATTRIBUTENAME IN  ([SPORTSCATEGORY],[BRAND],[PRODUCTDIVISION],[MARKETINGDIVISION])
) PIV;``
1
Chanukya 24 Фев 2016 в 13:46