У меня есть таблица, которая заполняется данными через API.Я не могу изменить макет входящих данных.
Я получаю данные в следующем макете:
elementtype | elementid | groupkeyword | keyword | name | type | value | options
event | 2644-1523 | algemeneinfo | artiest | art | text | test1 | NULL
event | 2644-1523 | algemeneinfo | titel | tit | text | test2 | "OK"
event | 2644-1523 | algemeneinfo | startuur | start | datetime | 20:00 | NULL
event | 2644-1523 | algemeneinfo | einduur | eind | datetime | 22:00 | NULL
... |... |... |... |.. |... |... |...
Я бы хотел, чтобы таблица имела такой макет:
elementid | artiest | titel | startuur | einduur |...
2644-1523 | test1 | test2 | 20:00 | 22:00 |...
Может быть в другой таблице, созданной специально для этого формата.
Количество значений в столбце «ключевое слово» может отличаться для каждого «идентификатора».Так что иногда есть 200 «ключевых слов», а иногда 240 «ключевых слов»
Я пробовал функцию pivot, но она не работает.Я также читал, что это не идеальный способ.
Я не знаю код, который получает данные в таблицу.
Я прочитал это в динамической сводной таблице, все поляимена столбцов должны быть указаны.Так что мне нужно указать + -240 имен столбцов?
Запрос, который я использую, чтобы получить все данные:
SELECT [elementtype]
,[elementid]
,[groupkeyword]
,[keyword]
,[name]
,[type]
,[value]
,[options]
FROM [dbo].[CustomdataElement]
Как лучше всего это сделать?
Я удалил запрос, который уже пробовал, потому что он не работает, я основал его на следующем коде:
create table temp
(
date datetime,
category varchar(3),
amount money
)
insert into temp values ('1/1/2012', 'ABC', 1000.00)
insert into temp values ('2/1/2012', 'DEF', 500.00)
insert into temp values ('2/1/2012', 'GHI', 800.00)
insert into temp values ('2/10/2012', 'DEF', 700.00)
insert into temp values ('3/1/2012', 'ABC', 1100.00)
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category)
FROM temp c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT date, ' + @cols + ' from
(
select date
, amount
, category
from temp
) x
pivot
(
max(amount)
for category in (' + @cols + ')
) p '
существует около 28000 различных (elementid) с каждым + -240 (ключевые слова).добавляются + -10 (elementid) каждый день.