2013-10-15 3 views
0

В SQL Server 2005 у меня есть таблица temp # Table1, в которой хранятся данные из динамического стержня, основанного на дне месяца. Таблица будет содержать 28,29,30 или 31 столбца в зависимости от месяца/года. Затем я хочу создать еще одну таблицу temp # Table2 со статическими 31 столбцами (чтобы добавить некоторые данные для форматирования отчета) и добавить в нее # Table1 с нулями в дополнительных столбцах.Вставьте туда, где количество столбцов различно

Я пробовал:

Select * into #Table2 from #Table1 

, но это не работает, он говорит мне, что # Table2 уже существует в базе данных. Я знаю, что это так, я положил его туда!

Или, есть ли способ добавить столбцы 29, 30 и 31 в # Таблицу 1, если я запустил стержень в феврале или 31, если я запустил его в июне/сентябре?

Надеюсь, это объясняет мою дилемму, и есть простое решение. Я не слишком умен!

+1

Почему бы не создать статический стержень из 31 столбца для создания таблицы 1, если допустимы эти дополнительные столбцы? Кроме того, вы не можете использовать 'SELECT ... INTO' для существующей таблицы [' INTO'] (http://technet.microsoft.com/en-us/library/ms188029.aspx): «создает * * новый ** таблица "(мой акцент). Вам нужно использовать 'INSERT ... SELECT' для вставки в существующую таблицу. –

ответ

1

Вы можете добавить 29,30 и 31, как имена столбцов, как и другие даты в сводном отчете как:

SELECT 1,2,...,28,29,30,31 
FROM table 
PIVOT(SUM(aggregate column) FOR spreading column IN(1,2,...,28,29,30,31)) AS P; 

, и тогда вы не должны использовать Select * into пункт, поскольку он создает новую таблицу. Вы должны использовать следующий раздел:

insert into #Table2 
select * from #Table1 

Надеюсь, это поможет !!!

0

Привет, попробуйте этот код перед созданием таблицы temp # table1 и # table2 вы должны проверить, что таблицы существуют или нет, если они существуют, тогда попытайтесь удалить их и создать в соответствии с вашей логикой после окончательного выполнения, вы должны снова удалить обе таблицы из temp DB. Надеюсь, этот код поможет. enter image description here

+0

Проводка кода в качестве изображения - замечательно недружелюбный способ поделиться - особенно потому, что SO имеет хорошие возможности разметки кода. Если вы выделите блок кода и нажмите кнопку '{}', он должен включить подсветку синтаксиса в вашем ответе (проверьте предварительный просмотр). Это также означает, что другие могут затем скопировать и вставить из вашего ответа. –

+0

Мой плохой. У моего запроса была такая же проблема с отправкой, поэтому я использовал Image. в противном случае я всегда отвечаю с помощью фрагмента Query. Спасибо. –

Смежные вопросы