От MS-овского SQL-я - к галактическому

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

От MS-овского SQL-я - к галактическому

Сообщение sim »

Нужно перевести SQL конструкцию на галактичекий язык
Подскажите плз - где и что нужно подправить (реализовать это в create view):

CREATE FUNCTION IntToDate(@S integer)
RETURNS varchar(10) AS
BEGIN
declare
@dt varchar(10),
@ret varchar(10)
set @dt=
convert(varchar,convert(int,substring(convert(BINARY(4),@s),4,1)))+'.'+
convert(varchar,convert(int,substring(convert(BINARY(4),@s),3,1)))+'.'+
convert(varchar,convert(int,substring(convert(BINARY(4),@s),1,2)))
set @ret=
case
when isdate(@dt)=1 then @dt
else null
end
RETURN @ret

END


drop table #db1
select
convert(int,f$tipsopr) as dvig
,f$cstepdoc as dst
,dbo.inttodate(k.f$dsopr) as kdats
,dbo.inttodate(k.f$dopr) as kdato
,k.f$name as kname,
k.f$summa as ksum,
k.f$nsopr as kdoc
into #db1
from t$katsopr k
where
convert(datetime,dbo.inttodate(k.f$dsopr))>=convert(datetime,'1.1.2005')
and convert(datetime,dbo.inttodate(k.f$dsopr))<=convert(datetime,'1.11.2005')
and f$tipsopr in(1,2)
and k.f$dopr<>0
and k.f$corg=
--0x8001000000003F0B
0x8001000000004440

insert into #db1
select
convert(int,f$direct)
as dvig
,f$cstepdoc as dst
,dbo.inttodate(b.f$ddoc) as kdats
,dbo.inttodate(b.f$ddoc) as kdato
,b.f$namepl as bname
,b.f$summa as ksum
,b.f$nodoc as pdoc
from t$basefin b
convert(datetime,dbo.inttodate(k.f$ddoc))>=convert(datetime,'1.1.2005')
and convert(datetime,dbo.inttodate(k.f$ddoc))<=convert(datetime,'1.11.2005')
and f$direct in(1,2)
and b.f$summa<>0
and b.f$tidkgal<=9
and b.f$corg=
--0x8001000000003F0B
0x8001000000004440

select *
--sum(ksum) ,dvig
from #db1
--group by dvig
order by dst,dvig
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

А чего там пеерводить то...выбираются данные об отгрузке и приходах от одной фирмы за период и о платежах за период по этой же конторе. Функция IntToDate - это из за особенности хранения даты у Галактистов в формате MSSQl. Причем платежи там.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Последнее предложение можно не читать )
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

:)
перевести - я имел в виду не на русский язык, а
как написать эту конструкцию, чтобы ее "поняла" Галактика, т.е. можно было компильнуть
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

select * from katsopr where ((nrec_need_org==katsopr.corg
and date(01,01,2005)<<=katsopr.dsopr
and date(01,11,2005)>>=katsopr.dsopr))
and (katsopr.tipsopr=1 or katsopr.tipsopr=2)
and katsopr.dopr<>date(0,0,0);



select * from basefin where ((nrec_need_org==basefin.corg
and date(01,01,2005)<<=basefin.ddoc
and date(01,11,2005)>>=basefin.ddoc))
and (basefin.direct=1 or basefin.direct=2) and basefin.summa<>0 and basefin.tidkgal<=9


Примерно вроде так..
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Re: От MS-овского SQL-я - к галактическому

Сообщение WiRuc »

К слову, так лучше не писать:
sim писал(а): where
convert(datetime,dbo.inttodate(k.f$ddoc))>=convert(datetime,'1.1.2005')
and convert(datetime,dbo.inttodate(k.f$ddoc))<=convert(datetime,'1.11.2005')
Надо так:

Код: Выделить всё

k.f$ddoc BETWEEN dbo.datetoint('1.1.2005') AND dbo.datetoint('1.11.2005')
где datetoint - функция обратной конвертации из даты в int.

А собственно, какую из конструкций надо перевести?
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

Ну, весь этот текст писан с использованием синтаксиса обычного MS SQL. Соответственно в таком виде для галактической компиляции он некорректен. Вот и вопрос такой: в каких местах явные плюхи?
Ответить