Ошибка при вставке данных в разреженную таблицу SQL - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь выполнить запрос вставки для таблицы SQL (Sparse Table), но получаю ошибку:

"Имя столбца или количество предоставленных значений не соответствует определению таблицы"

Запрос:

Insert [dbo].[Table1] (Table1 is a sparse table)
select id, [A],[B], [C], [D], [E] from (
Select  ID, 
            CategoryId, 
            1 as Flag
            From dbo.table2 
       ) a Pivot(Avg(Flag) For CategoryID In (
        [A],
        [B],
        [C],
        [D],
        [E]
           )) As PivotTable

Я могу выполнить запрос для нормальной таблицы SQL, но он не удается для разреженной таблицы.Я был бы очень признателен за любую помощь в этом

Заранее спасибо

1 Ответ

0 голосов
/ 14 сентября 2018

Вы должны сделать:

  • Создайте оператор INSERT, который явно перечисляет столбцы, в которые он будет вставлен - при условии, что ID может быть столбцом IDENTITY что вы не хотите / не можете вставить в

  • Определить точное количество значений для заполнения в этих столбцах

ваш оператор INSERT должен выглядеть примерно так:

insert into table_1 (cola, colb, colc)
       select cola, colb, colc from table_2

insert into tb1 values('1', '2','3') - это прекрасно работает, если у вас есть только 3 столбца

если у вас есть 4 столбца, но вы хотите вставить только 3 из них. Вы должны включить имена столбцов в INSERT INTO

   insert into tb1 (Col1,col2,col3) select col1, col2, col3 from tb_2

Примечание: всегда явно указывайте список столбцов, в которые оператор INSERT должен заполнить данные в

...