Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Не создаются табл. :( |
21 фев 17, 16:48 [20234086] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Запрос выполнился, но после этого MS SQLSERVER ошибка 1222 |
21 фев 17, 17:42 [20234410] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Запрос от Вас, TaPaK, но без ROLLBACK. |
21 фев 17, 18:03 [20234517] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
Какбэ продукты не раскладывают по разным таблицам. |
21 фев 17, 18:04 [20234520] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
ну так трусы наденьте COMMIT или крестик снимите |
||
21 фев 17, 18:05 [20234524] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
вы о этом
|
||||
21 фев 17, 18:06 [20234525] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Не раскрываются все табл в база. Смотрю в табл запросом, долго крутит, но результат не выдает. SELECT top 1 * FROM .[dbo].[продукт №1] |
21 фев 17, 18:07 [20234526] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
написал на свою голову... ROLLBACK выполните или вкладки позакрывайте или kill и тд |
||
21 фев 17, 18:10 [20234535] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Разблокировал. Но таблицы продукт №1, продукт №2 ... пустые. |
21 фев 17, 18:13 [20234549] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
![]() |
||
21 фев 17, 18:15 [20234557] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
Mish_Mish, это что, контрольное задание для проверки навыков? Постановка задачи не имеет никакого практического смысла. |
21 фев 17, 18:31 [20234596] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Задача: разложить по отдельным файлам данные по продуктам. У каждого сейлза свой продукт (один сейлз отвечает за один продукт). |
22 фев 17, 09:46 [20235871] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Mish_Mish, если таблицы статические то просто допишите insert с условием в динамику |
22 фев 17, 10:06 [20235933] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
TaPaK, спасибо вам большое. |
22 фев 17, 10:40 [20236051] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Все да не все... "DECLARE @sql VARCHAR(MAX)" но у меня большой запрос, почти 60 000 символов в запросе, да и 30 продуктов, итого VARCHAR( нужен 180 000), но VARCHAR(MAX) MAX = 8000. Подскажите, как быть? |
22 фев 17, 13:29 [20237038] Ответить | Цитировать Сообщить модератору |
iljy Member Откуда: Сообщений: 8711 |
Открыть для себя документацию и узреть там дивное:
|
||||
22 фев 17, 13:41 [20237110] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Mish_Mish, @sql =CAST(@sql as VARCHAR(MAX)) + ... |
22 фев 17, 13:41 [20237111] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
пишете ерунду, VARCHAR(MAX) это 2Гб, вашим 60000 символов хватит за глаза |
||
22 фев 17, 13:43 [20237119] Ответить | Цитировать Сообщить модератору |
Mish_Mish Member Откуда: Сообщений: 15 |
Работает. Ограничение по символам при PRINT(@SQL), в низу, в "сообщения" ![]() Всем спасибо за справедливую критику :) |
22 фев 17, 16:15 [20237759] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |