SQL Как перебрать таблицу и объединить результат? - PullRequest
0 голосов
/ 04 ноября 2008

Я пытаюсь сделать что-то вроде этого:

while @nrOfAuthlevels >= @myAuthLevel
begin
    set @myAuthLevel = @myAuthLevel + 1 
    SELECT      Role.name, Role.authorityLevel
    FROM        [dbo].[Role]
    ORDER BY Role.authorityLevel
end

Результатом этой хранимой процедуры должна стать таблица со всеми значениями Role.authorityLevel ниже моего. Но это порождает несколько таблиц.

Заранее спасибо

Br Кристоффер

Ответы [ 2 ]

6 голосов
/ 04 ноября 2008

Если вы хотите сохранить эту текущую структуру, то вам нужно будет вставить во временную таблицу каждый шаг цикла while и выходить за пределы этого возврата из таблицы TEMP.

Тем не менее, почему бы просто не использовать предложение WHERE для получения ожидаемых результатов возврата:

SELECT Role.Name, Role.AuthorityLevel
    FROM dbo.Role
    WHERE Role.AuthorityLevel < @MyAuthLevel
    ORDER BY Role.AuthorityLevel
1 голос
/ 04 ноября 2008

Создайте временную таблицу перед циклом и не выбирайте данные, а вставляйте данные в эту временную таблицу:

create table #tmp (
 Name type,
 authorityLevel type
)

while @nrOfAuthlevels >= @myAuthLevel
begin
        set @myAuthLevel = @myAuthLevel + 1     
        insert into #tmp values(
            SELECT          Role.name, Role.authorityLevel
            FROM        [dbo].[Role]
            where ...
        )
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...