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

Откуда:
Сообщений: 16
Волей судьбы пришлость работать с MS SQL
подскажите как реализовать на T-SQL следующую процедуру
(знаю как это реализовать на interbase, сомневаюсь как это делаеться на T-SQL)
----
Returns(T2 float)

declare varible T1 integer;

--------
for select T1 from Table1 into :T1
begin
if(T1=1) then
T2=T1;
else
select T2 from Table2 into :T2;
suspend;
end

соответсвенно на выходе у меня список значений T2

буду премного благодарен за помощь (в разумных пределах :-)))
3 ноя 03, 10:18    [403437]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
В данном форуме далеко не все знакомы с синтаксисом Interbase. Может быть вы все-таки объясните - что должна делать ваша процедура ? Чтобы нам не гадать ?
3 ноя 03, 10:45    [403484]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
sergkv_
Member

Откуда:
Сообщений: 16
сорри
задачка в принцыпе простая:
хранимая процедура должна выдавать список значений по условию
есть таблица Table1 и Table2
нужны данные из Table1 (пусть будет поле Field1)
если значение Field1 равно определенному значению (пусть будет= 1), то
береться поле Field2 из таблицы Table2

тоесть как реализовать цикл и проверку по условию
3 ноя 03, 10:55    [403495]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Если я не ошибаюсь, в Table2 одна запись.
Первое, что пришло в голову :
create proedure BlaBlaBla
as
select
t2 = case when Table1.T1 <> 1 then Table2.T2 else 1 end
from Table1, Table2
go

... хотя подозрительный запрос получился 8)
3 ноя 03, 10:56    [403499]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
bushmen
Member

Откуда: г. Москва
Сообщений: 828
>sergkv_

Если в табличках только по одной записи, то их можно и в одной держать, добавив поле для идентификации записи
3 ноя 03, 10:59    [403503]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
sergkv_
Member

Откуда:
Сообщений: 16
ну в Table2 к сожалению ни одна запись
и по ней будет еще и where

давайте я попробую описать реальную задачу может лучше получиться

есть Table1- суммы: поля date,Summa,idval
есть Table 2 - курсы поля : date,kurs,idval

в Table1 возможно три типа записи по рублям, долларам и евро
в Table 2 толька два типа записи доллары и евро

надо написать универсальную процедуры приведения сумм из Table1 к любой валюте(входной параметр)
Если бы в Table 2 были бы записи вида idval=рубли курс=1
было все просто, но этого нет

соттветственно на выходе должен быть след список
date,summa,kurs1,kurs2,(summa*kurs1/kurs2) as S

где kurs1 это курс к рублям валюты из записи Table1
kurs 2 это курс валюты приведения к рублям
3 ноя 03, 11:25    [403541]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
bushmen
Member

Откуда: г. Москва
Сообщений: 828
Наканец-то, получили условия задачи! :)
3 ноя 03, 11:38    [403575]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
злой шаман
Member

Откуда: Питер
Сообщений: 1253
Можно сделать подобную вьюху и использовать ее:

create view View2 as

select * from Table2 union all select distinct date,1,'рубли' from Table2
3 ноя 03, 11:45    [403597]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
sergkv_
Member

Откуда:
Сообщений: 16
to злой Шаман
в том то и дело, что не хотелось бы вьюху использовать
3 ноя 03, 12:15    [403692]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
злой шаман
Member

Откуда: Питер
Сообщений: 1253
Так?

select t1.date,t1.Summa,t2.kurs,t3.kurs,(t1.summa*t2.kurs/t3.kurs) S

from table1 t1
inner join table2 t2 on t2.date=t1.date and t2.idval=t1.idval
inner join table2 t3 on t3.date=t1.date and t3.idval='нужная валюта'
3 ноя 03, 12:31    [403724]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
sergkv_
Member

Откуда:
Сообщений: 16
to злой шаман
а вот тут как раз мы и забыли что в Table2 нет записей по рублям курсам
в этот селект записи по рублям из Table 1 не попадут
3 ноя 03, 12:38    [403740]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
inner замени на lrft
3 ноя 03, 12:42    [403748]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
злой шаман
Member

Откуда: Питер
Сообщений: 1253
Ку?

select t1.date,t1.Summa,t2.kurs,t3.kurs,t1.summa*t2.kurs/isnull(t3.kurs,1) S

from table1 t1
inner join table2 t2 on t2.date=t1.date and t2.idval=t1.idval
left outer join table2 t3 on t3.date=t1.date and t3.idval='нужная валюта'
3 ноя 03, 12:45    [403753]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с T-SQL  [new]
sergkv_
Member

Откуда:
Сообщений: 16
Спасиб большой за помощь будем эксперементировать, пробывать
3 ноя 03, 13:09    [403811]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить