Добрый день, форумчане. В связи с недостатком знаний столкнулся о стену, которую не могу пройти. Опишу ситуацию
Стоит задача из таблички в бд получать записи, а после их обработки эти записи обновлять в бд с изменённым столбцом.

Необходимо группировать следующим образом. 
В первую группу будут входить все записи, у которых с 7 по 10 символ значения разные. во второй тоже самое, в третьей тоже самое.
Пример:
Основываясь на первом скриншоте смотрим на этот скриншот 

 набор данных одинаковый, просто я сгруппировал и мы можем видеть, что в столбце lcode1 отображается количество записей. Как вы уже вычитали, группировка идёт основываясь на 4 символах каждой записи. для наглядности перенесу это в excel
Идея проста, получить данные, массивом прибавить буквы к названию основывась на символах из столбца и закинуть в табличку обратно.
Вот только я понимаю, что я цикл сделал не правильно, а как правильно сделать - не знаю. Обращаюсь к вам в надежде, что дадите подсказку как поступить в данной ситуации 
	Цитата:
	
	
		
			
				    dm.aqSqlTrud.SQL.Text := 'SELECT count(right(left(lcode, 10), 4)) as lcode1, right(left(lcode, 10), 4) as kkk'+ 
    ' FROM pf' + 
    ' WHERE Left(lcode, 6) in (' +quotedstr('117К21')+','+quotedstr('117И22')+','+q  uotedstr('117И31')+','+quotedstr('117И26')+','+quo  tedstr('117И20')+','+ 
    ''+quotedstr('117И34')+','+quotedstr('117И35')+','  +quotedstr('117900')+','+quotedstr('117930')+'' + 
    ' group by right(left(lcode, 10), 4)'; 
    dm.aqSqlTrud.Open; 
    if dm.aqSqlTrud.RecordCount > 0 then 
    begin 
     Zasl; 
    end; 
 
 
 
 
  procedure Zasl(); 
  var 
    sum, lcodesec, masssec: string; 
    r: string; 
    c: AnsiChar; 
    RusArr: array['А'..'Я'] of AnsiChar; 
    id: integer; 
  begin 
    lcodesec = ''; 
    masssec = ''; 
    id = ''; 
    dm.aqSqlTrud.SQL.Text := 'SELECT lcode, nm, kol, prd, zak_nm' + 
    ' FROM pf' + 
    ' WHERE Left(lcode, 6) in (' + quotedstr('117К21') + ',' + quotedstr('117И22') ',' + quotedstr('117И31') ',' + quotedstr('117И26') ',' + quotedstr('117И20') ',' + 
    '' + quotedstr('117И34') ',' + quotedstr('117И35') ',' + quotedstr('117900') ',' + quotedstr('117930') '' + 
    ' order by right(left(lcode,10),4)'; 
    dm.aqSqlTrud.Open; 
    for i := 1 to DM.aqSqlTrud.RecordCount do 
      begin 
         RusArr[c] := c; 
         r: = DM.aqSqlTrud.FIELDBYNAME('zak_nm').AsString 
         id = DM.aqSqlTrud.FIELDBYNAME('id').AsString 
 
            for c := 'А' to 'Я' do 
            if copy(lcodesec, 7, 4) = copy(art, 7, 4) then 
               r := r + '_' + quotstr(RusArr); 
            if r = masssec then 
            begin 
              r := masssec; 
            end 
            else 
              r := r + '_' + quotstr(RusArr[c]); 
 
      end; 
    lcodesec = : art; 
    masssec := r;} 
 
    dm.aqDiv.SQL.Text := 'UPDATE pf SET zak_nm = ' + quotedstr(r) + ' WHERE id=' + quotedstr(id) + '; 
    dm.aqDiv.Open; 
    dm.aqSqlTrud.Next; 
 
  end;
			
		 |