Страница 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 :mad: Все ясно, спасибо!

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.