2016-10-05 4 views
0

мой запрос, как показано ниже:Префиксальный Столбцы не допускаются в PIVOT Оператора

select * from 
    (
    SELECT ShoperCompCode, Name, Qty, Value, Tb, ASP, UPT, AST, CTS, class2cd, CashSaleQty FROM MBDSR 
    )A 
PIVOT (AVG(CashSaleQty) FOR class2cd IN ("")) AS PVT 

таблицы, как показано ниже:

ShoperCompCode Name Qty Value Tb ASP  UPT AST CTS class2cd CashSaleQty 
MB1   TEST 35 77064 6 2201.83 5.83 12844 0.44 Jeans 1 
MB2   TEST2 5 11095 2 2219 2.5 5547.5 0.06 T-shirt 2 
MB3   TEST3 0 0  0 0  0  0  0  Jeans 3 

Теперь, я не знаю, значение class2cd погоду будет «Jeans "или„майка“

Т.е. (Class2Cd данные не статична, то это будет динамическим) ..

+0

Какой тип dbms вы используете? – jarlh

+0

MS SQL SERVER ... –

ответ

0

Проблема была решена гл eck мой обновленный код.

DECLARE @cols AS NVARCHAR(MAX),@query AS NVARCHAR(MAX) 

    Select @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(Class2Cd) 
       from MBDSR 
     FOR XML PATH(''), TYPE 
     ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'') 

set @query = 'SELECT * from 
     (
      SELECT ShoperCompCode, Name, Qty, Value, Tb, ASP, UPT, AST,  CTS, class2cd, CashSaleQty FROM MBDSR 
     ) x 
     pivot 
     (
      AVG(CashSaleQty) FOR class2cd IN (' + @cols + ') 
     ) p ' 

execute(@query);   
Смежные вопросы