Страница 14 из 19
Re: Прямой SQL
Добавлено: 25 мар 2014, 11:47
RAJAH
Алексей писал(а):
возвращает пусто
Код: Выделить всё
sql select saldmoun.sums, saldmoun.datesal from saldmoun where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=convert(datetime,'01/03/2014',104);
как конвертировать дату для запросов?
Код: Выделить всё
sql select saldmoun.sums, saldmoun.datesal from saldmoun where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=#date(1,3,2014);
Re: Прямой SQL
Добавлено: 25 мар 2014, 11:51
Алексей
Да, спасибо, #date(01,03,2014) помогло.
Подскажите ещё одно, как сгруппировать не по коду объекта а по первым трём символам кода? Не получается почему то, как бы непробовал.
Код: Выделить всё
sql select sum(saldmoun.sums), katstroy.code from saldmoun left join katstroy on kauos[3]=katstroy.nrec where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=#date(01,03,2014)
group by katstroy.code;
Re: Прямой SQL
Добавлено: 25 мар 2014, 11:58
Den
Алексей писал(а):Да, спасибо, #date(01,03,2014) помогло.
Подскажите ещё одно, как сгруппировать не по коду объекта а по первым трём символам кода? Не получается почему то, как бы непробовал.
Код: Выделить всё
sql select sum(saldmoun.sums), katstroy.code from saldmoun left join katstroy on kauos[3]=katstroy.nrec where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=#date(01,03,2014)
group by katstroy.code;
substring
Re: Прямой SQL
Добавлено: 25 мар 2014, 12:23
Алексей
а почему отрабатывает
Код: Выделить всё
sql select sum(saldmoun.sums), substring(katstroy.code,1,3 ) from saldmoun left join katstroy on kauos[3]=katstroy.nrec where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=#date(01,03,2014)
group by substring(katstroy.code,1,3);
а как только я именую поле (чтобы груп бай был меньше), запрос перестает работать
Код: Выделить всё
sql select sum(saldmoun.sums), substring(katstroy.code,1,3 ) as stroyka from saldmoun left join katstroy on kauos[3]=katstroy.nrec where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=#date(01,03,2014);
почему?
Re: Прямой SQL
Добавлено: 25 мар 2014, 12:53
Den
Код: Выделить всё
sql select sum(saldmoun.sums), substring(katstroy.code,1,3 ) as stroyka from saldmoun left join katstroy on kauos[3]=katstroy.nrec where
'408' = saldmoun.scheto
and '3' = saldmoun.subossch
and datesal=#date(01,03,2014)
group by substring(katstroy.code,1,3);
И так не работает ?
Re: Прямой SQL
Добавлено: 26 мар 2014, 05:40
Алексей
так работает, но смысл в именовании поля, чтобы потом это короткое имя использовать в group by ...
Re: Прямой SQL
Добавлено: 26 мар 2014, 10:41
Den
Алексей писал(а):так работает, но смысл в именовании поля, чтобы потом это короткое имя использовать в group by ...
Могу ошибаться, но, помоему, псевдоним столбца, определенный в списке SELECT, нельзя использовать при указании столбца группирования.
По каким соображением Вам важно использовать его именно в group by ?
Re: Прямой SQL
Добавлено: 26 мар 2014, 11:21
edward_K
Вообще то SQL требует все не константные поля и без функций агрегирования в select использовать в group by - исходя из этого и думайте.
Re: Прямой SQL
Добавлено: 15 апр 2014, 11:10
win
BITAND возвращает NULL. Подскажите в чем проблема?
sql SELECT x$users.xu$flag, bitand(x$users.xu$flag,8) FROM x$users;
Re: Прямой SQL
Добавлено: 15 апр 2014, 14:30
Den
вроде работает...у меня Ваш запрос выдал :
┌─────────┬─────────────────────────────┐
│ XU$FLAG │ BITAND(X$USERS."XU$FLAG",8) │
├─────────┼─────────────────────────────┤
│ 1028 │ 0.0000000000000000000000 │
│ 1028 │ 0.0000000000000000000000 │
│ 12 │ 8.0000000000000020000000 │
может не на 9,1 галактике Вы пробуете ?
Re: Прямой SQL
Добавлено: 15 апр 2014, 14:43
edward_K
Проверьте версию атлантиса в сапорте - на старых могут быть глюки. для 810 это 5.4.43 или 5.4.44. В vipprogr.chm иногда пишут начиная с какого атлантиса функция актуальна.
Re: Прямой SQL
Добавлено: 16 апр 2014, 12:23
win
edward_K писал(а):Проверьте версию атлантиса в сапорте - на старых могут быть глюки. для 810 это 5.4.43 или 5.4.44. В vipprogr.chm иногда пишут начиная с какого атлантиса функция актуальна.
Функции BITAND, BITNOT, BITOR и BITXOR доступны начиная с Атлантиса 5.5.12. У нас 5.4.44
Все ясно, спасибо!
Re: Прямой SQL
Добавлено: 18 апр 2014, 11:04
win
Подскажите как запустить функцию или хранимую процедуру написанную на PlSQL, например, "DT_Month" через vip ? (Гал 810)
Re: Прямой SQL
Добавлено: 18 апр 2014, 12:13
Den
win писал(а):Подскажите как запустить функцию или хранимую процедуру написанную на PlSQL, например, "DT_Month" через vip ? (Гал 810)
Из ВИП доступен вызов зарегестрированных процедур и функций .Аля :
Код: Выделить всё
SQL Function GetDocPer (
curparty : comp;
nrecops : comp;
st_v : comp;
dper : date
): comp ;
var
res : comp;
{
res:=(
SELECT top 1 k.nrec
FROM Spsopr sp inner join Katsopr k on sp.csopr=k.nrec
and sp.cparty=curparty
and sp.vidsopr=630
and sp.dsopr<=dper
and sp.prmc=1
and k.cpodrfrom=nrecops
and k.cnote=st_v
);
if (res= #comp(0) )
{
res:=(
SELECT top 1 k.nrec
FROM Spsopr sp inner join Katsopr k on sp.csopr=k.nrec
and sp.cparty=curparty
and sp.vidsopr=630
and sp.dsopr<=dper
and sp.prmc=1
and k.cnote=st_v
);
}
Return res;
}
после компиляции такой функции она появится на вкладке в саппорте в правах доступа на закладке "права на хранимые процедуры"
Также есть немало функций по работе с датой и временем, описанными в vipprog.chm в разделе "прямой sql" - их ,в принципе достаточно
Кроме этого никто не запрещает воспользоваться опытом Морзе
http://tyumbit.ru/gal_forum/viewtopic.php?f=8&t=10938
и написать что то свое на первозданном диалекте PL/SQL (ну или T-SQL)...кстати нечто подобное есть в
.\exe\ManufExt\SQL\Oracle\Func\
Re: Прямой SQL
Добавлено: 10 июл 2014, 17:33
Руслан
Пробую делать апдейт таблицы spstep и basedoc в печатной форме основания на продажу. Причем basedoc апдейтит, а на spstep Апдейт не проходит. В саппорте апдейты проходят нормально:
Код: Выделить всё
.begin
update Basedoc where (basedoc.Nrec = BaseDocNrec ) set basedoc.total:= rr_sumv, basedoc.nds := r_ndsv;
update Spstep where (Spstep.CSTEPDOC = comp(‘281474977156119’)) set Spstep.price:= rr_sumv;
end.