Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2016, 11:55   #1
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию SQL

Всем добрый день! И это снова я и снова нужна Ваша помощь!

Имеется такой код SQL:
Код:
DECLARE @tp int;

set @tp = (SELECT TOP 1 a.[idTP]
  FROM [dbo].[table1] a,
       [dbo].[table2] b
  where (a.idElm = 437608) and (b.idTP = a.idTP) and (b.active = 1))

exec [dbo].func1 @tp
В результате имею некую таблицу с полями. Каким образом можно работать с результирующей таблицей в рамках SQL? Как к ней обратиться? Или нужно создавать временную и в нее делать INSERT?

И еще вопрос: как можно работать с полученными данными в рамках SQL в таком духе:
пока не конец таблицы, если значение в поле "группа" не равно NULL - переменная x1 := x1 + time1 (time1 это тоже одной из полей, т.е. нужно взять значение той же строки)
если значение в поле "группа" равно NULL, то переменная x2 := x2 + time2. И в результате обхода таблицы я должен получить два значения: time1 и time2.

Надеюсь понятно смог донести проблему. Заранее благодарю за помощь!
nactyx вне форума Ответить с цитированием
Старый 14.04.2016, 12:10   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если для обращения к результирующей таблице из пакета, то:
https://habrahabr.ru/post/217649/

Если на клиенте, то получить результирующий набор так например
Код:
ADOQuery.SQL.Text:='EXEC MyProcedure';
ADOQuery.Open;
Цитата:
пока не конец таблицы
На языке sql см. Cursor
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.04.2016 в 12:13.
Аватар вне форума Ответить с цитированием
Старый 14.04.2016, 13:10   #3
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Спасибо, будем пробовать!
nactyx вне форума Ответить с цитированием
Старый 14.04.2016, 14:24   #4
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Управился без курсоров, с условиями и еще одной промежуточной таблицей. Теперь такой вопрос: как объединить результаты двух запросов в два столбца:

Код:
select sum(otime + ptime) as st_chas
from @t2 
where grp is not null
и

Код:
select sum(otime + ptime) as chel_chas
from @t2 
where grp is null
Чтобы получилась таблица со столбцами st_chas и chel_chas и с одной заполненной строкой, сумма ведь.
nactyx вне форума Ответить с цитированием
Старый 14.04.2016, 14:42   #5
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

И еще вдогонку вопросец:
Т.е. два случая рассмотрены выше, а есть еще третий - когда в @t2 нет записей, и в таком случае вывести такую таблицу, чтобы было два столбца: st_chas и chel_chas и с одной заполненной нулевыми значениями строкой.

Т.е. по сути нужно все эти три случая (этот и два выше) одним запросом рассмотреть и вывести результат.
nactyx вне форума Ответить с цитированием
Старый 14.04.2016, 15:15   #6
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Цитата:
Сообщение от nactyx Посмотреть сообщение
Управился без курсоров, с условиями и еще одной промежуточной таблицей. Теперь такой вопрос: как объединить результаты двух запросов в два столбца:

Код:
select sum(otime + ptime) as st_chas
from @t2 
where grp is not null
и

Код:
select sum(otime + ptime) as chel_chas
from @t2 
where grp is null
Чтобы получилась таблица со столбцами st_chas и chel_chas и с одной заполненной строкой, сумма ведь.
С этим разобрался. Остается только случай с пустой @t2

Последний раз редактировалось nactyx; 14.04.2016 в 15:37.
nactyx вне форума Ответить с цитированием
Старый 14.04.2016, 16:00   #7
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Ну и с этим сам разобрался.
nactyx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS SQL Экспорт данных из dbf в таблицу ms sql ksu04061992 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 19.08.2015 20:42
Oracle. PL/SQL Dev. Выполнить много SQL'файлов по-порядку в 1 клик Человек_Борща SQL, базы данных 2 11.12.2014 12:12
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26