Попытка создать представление с помощью PIVOT в нем, не может понять синтаксис. В исходном представлении есть три столбца: ClientNameID, Item и CountOfItem. Я хочу, чтобы идентификатор ClientNameID был строкой, Item - столбцом, а CountOfItem - значением.Синтаксис SQL PIVOT неверен
0
A
ответ
0
Я понял это:
SELECT clientnameid
FROM dbo.vAggregateSalesByCustomerAndItem
pivot (
Sum(countOfItem) FOR Item in ([Ring])
) PivotTable
Проблема была синтаксис НО Я также узнал, что размеры (столбцы) должны быть жестко закодированы в DML. Я хотел динамически получать размеры из таблицы, которая работает в Excel, с диапазоном столбцов, но не здесь.
+0
, чтобы получить размеры динамически, вам понадобится 'Dynamic SQL'. Вы можете запросить' sys.columns' или 'INFORMATION_SCHEMA.COLUMNS', чтобы получить список имен столбцов – Squirrel
0
Я думаю, вы должны попробовать это. его работал для вас ..
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT DISTINCT ',' + Item
from dbo.vAggregateSalesByCustomerAndItem
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT clientnameid ' + @cols + ' from
(
select clientnameid,countOfItem,Item
from dbo.vAggregateSalesByCustomerAndItem
) x
pivot
(
Sum(countOfItem)
for Item in (' + @cols + ')
) p '
execute(@query);
пожалуйста, обратитесь к книгам онлайн https://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx на правильный синтаксис для PIVOT – Squirrel
@Squirrel Genius. Я не могу представить, почему я об этом не думал. – nicomp