0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 20
|
|
1 | |
Создание временной таблицы27.01.2013, 01:29. Показов 50727. Ответов 11
Метки нет (Все метки)
Здравствуйте.
Есть таблица с полями А,Б оба int. Значения А может повторяться несколько раз, но не более 3х. В Б все значения различны. Нужно в Т-SQL создать временную таблицу из четырех колонок, в которой в первой колонке бы были только уникальные значения, во второй, третьей, четвертой соответсвующие им значения Б. Если соответствующих значений меньше 3х тогда просто заполнялся бы НУЛЛ. A1 Б1 А2 Б3 А1 Б2 A2 Б4 А2 Б5 Нужно получить: А1 Б1 Б2 НУЛЛ А2 Б3 Б4 Б5 Подскажите в каком направление двигаться.
0
|
27.01.2013, 01:29 | |
Ответы с готовыми решениями:
11
Создание временной таблицы через переменную типа TABLE Получение данных из временной таблицы Запрос на сравнение по значению из временной таблицы Создание временной таблицы |
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|||||||||||
27.01.2013, 11:45 | 2 | ||||||||||
можно попробовать select...for xml и затем парсинг xml
Добавлено через 9 часов 53 минуты Что-то вроде
Ну или еще проще
0
|
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 20
|
|
27.01.2013, 22:18 [ТС] | 3 |
спасибо. попробую.
0
|
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
|
||||||
28.01.2013, 11:52 | 4 | |||||
cygapb-007, эм. А зачем всё делать через кхм?
Есть специальные временные таблицы http://msdn.microsoft.com/ru-r... .100).aspx
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
28.01.2013, 15:31 | 5 |
Через кхм - это через @ ? Напомню, что правильное обозначение для кхм - ¤, или "солнышко", если вы играете в преф, например.
В свою очередь тоже могу подкинуть несколько ссылок, например эту: DECLARE @local_variable (Transact-SQL), или вот эту:INF: Frequently Asked Questions - SQL Server 2000 - Table Variables. Если коротко - то преимущества и недостатки @ по сравнению с # отлично изложены вот здесь. Приведу одну цитату:
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
|
||||||
28.01.2013, 16:15 | 6 | |||||
Чего-то Денис Резник по данной ссылке напоминает чайника.
Одно утверждение А вот тут, например, разве не создаются аж два некластерных индекса?!
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
28.01.2013, 16:33 | 7 |
Я так понимаю, по поводу преимуществ возражений не последовало))?
А если учесть дату публикации (Опубліковані 31-01-2010) - то может так оно и было... просто первая попавшаяся ссылка в поисковике...
0
|
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
|
|
28.01.2013, 17:43 | 8 |
cygapb-007, ну с параметром нет возможности работать в последствии. он правильно не воспринимает команды Delete, Update и т.д.
+ я работаю от миллионников до десятков миллиардов строк - а параметр вроде бы помещает определённое количество строк.
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||||||
28.01.2013, 17:57 | 9 | |||||
В смысле не параметр, а табличная переменная? Почему же, @table прекрасно понимает и Delete, и Update, и Insert. А поскольку @table хранится в той же TempDB, то и по размеру ограничена только размером жесткого диска. В приводимой сслылке ведь написано, что
Но опять же
0
|
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
|
|
28.01.2013, 18:31 | 10 |
cygapb-007, No comments
http://msdn.microsoft.com/ru-r... 75010.aspx P.S. По своему опыту знаю - автора книг очень часто не правы и у них очень много ошибок, самое качественное вникание в тему это прочитать минимум 3 независимых источника и потом ещё самому поэкспериментировать с данными.
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
|
|
28.01.2013, 20:02 | 11 |
Сервер, строя план выполнения запроса с участием табличной переменной, всегда полагает,
что в этой переменной одна запись! Статистики-то нет! Можно себе представить качество этого плана, если в наличии на самом деле миллион записей. Однако, есть и плюсы. Например, если надо в транзакции сохранить нечто для того, чтобы после отката получить это "нечто", то проще всего воспользоваться табличной переменной - она же в откате не участвует!
1
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||||||
29.01.2013, 12:08 | 12 | |||||
230к строк... Порядок результатов одинаков
Там, где ожидается 1 строка результата, # всегда отстает. Кликните здесь для просмотра всего текста
Код
id start stop delta id start stop delta #-@ ----------- ----------------------- ----------------------- ----------- ----------- ----------------------- ----------------------- ----------- ----------- 1 2013-01-29 09:22:09.717 2013-01-29 09:22:09.757 40000 2 2013-01-29 09:22:09.757 2013-01-29 09:22:11.783 2026000 1986000 3 2013-01-29 09:22:11.783 2013-01-29 09:22:14.430 2646000 4 2013-01-29 09:22:14.430 2013-01-29 09:22:16.777 2346000 -300000 5 2013-01-29 09:22:16.777 2013-01-29 09:22:16.817 40000 6 2013-01-29 09:22:16.817 2013-01-29 09:22:17.007 190000 150000 7 2013-01-29 09:22:17.007 2013-01-29 09:22:17.067 60000 8 2013-01-29 09:22:17.067 2013-01-29 09:22:17.443 376000 316000 * порядок результата на отборе 13 строк из 230К - одинаков Добавлено через 2 часа 29 минут (Конечно, именно в этом конкретном случае :-))
0
|
29.01.2013, 12:08 | |
29.01.2013, 12:08 | |
Помогаю со студенческими работами здесь
12
Создание временной таблицы,где ее название-переменная,названия столбцов-поля другой таблицы .. Создание временной таблицы Создание временной таблицы на основе существующей Создание временной таблицы и заполнение её значениями из Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |