Приветствую!
Есть таблица: объект, артикул, дата, элементы товародвижения, остатки. Хочу удалить при первоначальном и при инкрементальном проходе нули остатков перед первым товародвижением.
При инкрементальном чуть больше код, а именно:
T8:
load *
,if(ARTICLE<>peek('ARTICLE') and Flag=1,1,
if(ARTICLE<>peek('ARTICLE') and TotalDailyRest<>0, 1,
if(ARTICLE<>peek('ARTICLE') and Flag<>1, 0,
if(ARTICLE=peek('ARTICLE') and TotalDailyRest<>0, 1,
if(ARTICLE=peek('ARTICLE') and Peek(Flag) = 1,1,0))))) as Flag
Resident T7
order by OBJECT, ARTICLE, CREATEDAT
;
Т.е. при Flag = 0 в дальшейшем удалятся строки.
Проблема, что нельзя использовать ARTICLE<>peek('ARTICLE') , т.к. не числа. Что можно взамен использовать? Артикулы как текст, вида 068770.
Смотрите в сторону функции мatch() и её производных: mixmatch() и wildmatch().
Будет что-то типа
мatch(ARTICLE,peek('ARTICLE'))=1 - если есть совпадения
мatch(ARTICLE,peek('ARTICLE'))=0 - если нет совпадений
Цитата: LoryMax от 02 марта 2017, 08:30:27
Проблема, что нельзя использовать ARTICLE<>peek('ARTICLE') , т.к. не числа. Что можно взамен использовать? Артикулы как текст, вида 068770.
Стоп, почему нельзя использовать peek() с текстом?
Все прекрасно работает.
Следует учитывать сортировку и переходы по ключевым значениям верхнего уровня. В вашем примере это OBJECT.