Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Доброго времени суток.

Задача: создать табл с заголовком из таблицы.

Есть табл, где есть список клиентов и продуктов.
declare @t table(cl nvarchar(100), product nvarchar(100))
insert @t
select '1', 'продукт №1'
union all
select '2', 'продукт №1'
union all
select '3', 'продукт №2'
union all
select '4', 'продукт №2'
union all
select '5', 'продукт №3'
union all
select '6', 'продукт №4'

select * from @t

Как в одном запросе создать 4 табл.:
табл.продукт №1
табл.продукт №2
табл.продукт №3
табл.продукт №4
фильтр по product.
Если продуктов n, то т табл = n.
21 фев 17, 16:28    [20233973]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish,
эээ так?

DECLARE @T TABLE 
(
	a VARCHAR(10),
	b VARCHAR(100)
)

insert @t
select '1',	'продукт №1'	
union all
select '2',	'продукт №1'	
union all
select '3',	'продукт №2'	
union all
select '4',	'продукт №2'	
union all
select '5',	'продукт №3'	
union all
select '6',	'продукт №4'

DECLARE @sql VARCHAR(MAX) = ''

SELECT 
	@sql =@sql + 'CREATE TABLE dbo.[' + b + '] (a VARCHAR(10)) ' 
FROM @T
GROUP BY
	b

BEGIN TRAN
	EXEC(@Sql)	
ROLLBACK
21 фев 17, 16:33    [20234002]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Не создаются табл. :(
21 фев 17, 16:48    [20234086]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
londinium
Member

Откуда: Киев
Сообщений: 1193
Mish_Mish,

убери ROLLBACK и погляди, ну или
DECLARE @T TABLE 
(
	a VARCHAR(10),
	b VARCHAR(100)
)

insert @t
select '1',	'продукт №1'	
union all
select '2',	'продукт №1'	
union all
select '3',	'продукт №2'	
union all
select '4',	'продукт №2'	
union all
select '5',	'продукт №3'	
union all
select '6',	'продукт №4'

DECLARE @sql VARCHAR(MAX) = ''

SELECT 
	@sql =@sql + 'CREATE TABLE dbo.[' + b + '] (a VARCHAR(10)) ' 
FROM @T
GROUP BY
	b;

PRINT(@SQL);
21 фев 17, 16:51    [20234108]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Запрос выполнился, но после этого MS SQLSERVER ошибка 1222
21 фев 17, 17:42    [20234410]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish,
какой именно запрос?

DECLARE @T TABLE 
(
	a VARCHAR(10),
	b VARCHAR(100)
)

insert @t
select '1',	'продукт №1'	
union all
select '2',	'продукт №1'	
union all
select '3',	'продукт №2'	
union all
select '4',	'продукт №2'	
union all
select '5',	'продукт №3'	
union all
select '6',	'продукт №4'

DECLARE @sql VARCHAR(MAX) = ''

SELECT 
	@sql =@sql + 'IF OBJECT_ID(''dbo.['+b+']'') IS NULL CREATE TABLE dbo.[' + b + '] (a VARCHAR(10)) ' 
FROM @T
GROUP BY
	b

EXEC(@Sql)		
21 фев 17, 17:57    [20234494]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Запрос от Вас, TaPaK, но без ROLLBACK.
21 фев 17, 18:03    [20234517]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Какбэ продукты не раскладывают по разным таблицам.
21 фев 17, 18:04    [20234520]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish
Запрос от Вас, TaPaK, но без ROLLBACK.

ну так трусы наденьте COMMIT или крестик снимите BEGIN TRAN
21 фев 17, 18:05    [20234524]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Владислав Колосов
Какбэ продукты не раскладывают по разным таблицам.

вы о этом
автор
Задача: создать табл с заголовком из таблицы.
21 фев 17, 18:06    [20234525]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Не раскрываются все табл в база.

Смотрю в табл запросом, долго крутит, но результат не выдает. SELECT top 1 * FROM .[dbo].[продукт №1]
21 фев 17, 18:07    [20234526]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish
Не раскрываются все табл в база.

Смотрю в табл запросом, долго крутит, но результат не выдает. SELECT top 1 * FROM .[dbo].[продукт №1]

написал на свою голову...
ROLLBACK выполните или вкладки позакрывайте или kill и тд
21 фев 17, 18:10    [20234535]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Разблокировал.

Но таблицы продукт №1, продукт №2 ... пустые.
21 фев 17, 18:13    [20234549]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish
Разблокировал.

Но таблицы продукт №1, продукт №2 ... пустые.
а что в них должно быть? ) просили создать - создали
21 фев 17, 18:15    [20234557]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Ну ... и заполнить данными по фильтру продукт:, т.е. в таблицах
табл продукт 1
a b
1 продукт 1
2 продукт 1

табл продукт 2
a b
3 продукт 2
4 продукт 2

табл продукт 3
a b
5 продукт 3

табл продукт 4
a b
6 продукт 4
21 фев 17, 18:19    [20234571]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Mish_Mish,

это что, контрольное задание для проверки навыков? Постановка задачи не имеет никакого практического смысла.
21 фев 17, 18:31    [20234596]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Задача: разложить по отдельным файлам данные по продуктам. У каждого сейлза свой продукт (один сейлз отвечает за один продукт).
22 фев 17, 09:46    [20235871]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish,

если таблицы статические то просто допишите insert с условием в динамику
22 фев 17, 10:06    [20235933]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
TaPaK, спасибо вам большое.
22 фев 17, 10:40    [20236051]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Все да не все...

"DECLARE @sql VARCHAR(MAX)"

но у меня большой запрос, почти 60 000 символов в запросе, да и 30 продуктов, итого VARCHAR( нужен 180 000), но VARCHAR(MAX) MAX = 8000. Подскажите, как быть?
22 фев 17, 13:29    [20237038]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
iljy
Member

Откуда:
Сообщений: 8711
Mish_Mish
Подскажите, как быть?


Открыть для себя документацию и узреть там дивное:

MSDN
varchar [( n | max )]
Строковые данные переменной длины не в Юникоде. n определяет длину строки и может принимать значение от 1 до 8000. Max Указывает, что максимальный размер хранилища равен 2 ^ 31-1 байт (2 ГБ).
22 фев 17, 13:41    [20237110]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Mish_Mish,

@sql =CAST(@sql as VARCHAR(MAX)) + ...
22 фев 17, 13:41    [20237111]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
o-o
Guest
Mish_Mish
"DECLARE @sql VARCHAR(MAX)"

но у меня большой запрос, почти 60 000 символов в запросе, да и 30 продуктов, итого VARCHAR( нужен 180 000), но VARCHAR(MAX) MAX = 8000. Подскажите, как быть?

пишете ерунду, VARCHAR(MAX) это 2Гб, вашим 60000 символов хватит за глаза
22 фев 17, 13:43    [20237119]     Ответить | Цитировать Сообщить модератору
 Re: Создать таблицы с название поля  [new]
Mish_Mish
Member

Откуда:
Сообщений: 15
Работает.
Ограничение по символам при PRINT(@SQL), в низу, в "сообщения"
Всем спасибо за справедливую критику :)
22 фев 17, 16:15    [20237759]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить