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

Откуда:
Сообщений: 58
Здравствуйте.
Задача такая: нужно написать селект на tsql
полный аналог следующего (для Oracle):
select 1 from dual connect by level < 12

Запрос возвращает таблицу с одним столбцом из 12 ячеек с единицами.

Возможно ли такое?
24 ноя 11, 07:48    [11649241]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
;with 
	cte(i)
	As (
		select 1 i
		union all
		select i + 1 from cte where i < 12
	)
select * from cte
24 ноя 11, 08:03    [11649248]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
vasiliusis
Member

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

пишет
Incorrect syntax near the keyword 'with'.
24 ноя 11, 08:34    [11649277]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
vasiliusis
HandKot,

пишет
Incorrect syntax near the keyword 'with'.
А вам для всех версий mssql ответ давать?
24 ноя 11, 08:53    [11649322]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
для люой версии SQL (но кол-во ограничено)
select top 12 1 from spt_values

для этих целей лучше создать таблицу чисел и заполнить ее до милиона или милиарда или... кому как надо
24 ноя 11, 09:15    [11649387]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
HandKot

для этих целей лучше создать таблицу чисел и заполнить ее до милиона или милиарда или... кому как надо

Лучше до 10 а потом джойнить её саму на себя, ну или воспользоваться master.dbo.spt_values
24 ноя 11, 09:39    [11649460]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
vasiliusis
Member

Откуда:
Сообщений: 58
Гавриленко Сергей Алексеевич,

Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38
24 ноя 11, 10:39    [11649705]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
gds
HandKot
для этих целей лучше создать таблицу чисел и заполнить ее до милиона или милиарда или... кому как надо

Лучше до 10 а потом джойнить её саму на себя, ну или воспользоваться master.dbo.spt_values
А почему именно spt_values?
24 ноя 11, 11:23    [11650004]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Dmitry V. Liseev
gds
пропущено...

Лучше до 10 а потом джойнить её саму на себя, ну или воспользоваться master.dbo.spt_values
А почему именно spt_values?

Ну, наверное потому, что там уже содержатся цифры и не надо создавать каких то таблицек и заполнять их
select number from master.dbo.spt_values
where type = 'P'
24 ноя 11, 11:30    [11650065]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
gds
Dmitry V. Liseev
пропущено...
А почему именно spt_values?

Ну, наверное потому, что там уже содержатся цифры и не надо создавать каких то таблицек и заполнять их
select number from master.dbo.spt_values
where type = 'P'
В запросе:
select top 12 1 from ...
пофиг, что содержится в таблице. Важно, чтобы там было более 12 строк. У меня в spt_values содержится 2506 строк. Вот я и подумал, что в принципе, для означенной у ТС задачи подойдет любая достаточно большая таблица.
24 ноя 11, 11:38    [11650118]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
Alibek B.
Member

Откуда:
Сообщений: 3955
А почему нельзя просто 11 строк с select 1 union all написать?
Самое простое и работать будет везде.
24 ноя 11, 12:11    [11650420]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
11347386
24 ноя 11, 12:48    [11650720]     Ответить | Цитировать Сообщить модератору
 Re: Переделать селект с PL/SQL на TSQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Alibek B.
А почему нельзя просто 11 строк с select 1 union all написать?
Самое простое и работать будет везде.
Самое простое - сделать таблицу, как тут советовали.

Строки с select 1 union all будут медленнее, и придётся динамический SQL использовать (ведь 11 - это не константа)
24 ноя 11, 13:20    [11651009]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить