Подсчет групп по оператору AX2012 R3

Я хочу подсчитать группу по значениям операторов и записать управление.

Есть таблица с 3 полями; ItemId, TaxGroup и TaxItemGroup. Одинаковый itemId должен иметь одинаковые значения taxgroup и taxItemGroup. Если строки с одинаковым ItemId имеют разные налоговые значения, я должен выдать исключение.

Я написал этот код, но это возвращаемый номер всех записей. Как я могу написать этот контроль?

while select count(RecId) from ActivityLineExtraLcl
        group by Itemid, TaxGroup, TaxItemGroup
            where ActivityLineExtraLcl.Amount != 0
if(ActivityLineExtraLcl.RecId > 1 )
      throw error("Same ItemIds can't have different values!");

person Mumble    schedule 21.06.2021    source источник
comment
Как вы думаете, почему группировка по ItemId, TaxGroup и TaxItemGroup и оценка количества записей в каждой группе покажет вам, есть ли ItemIds с разными налоговыми значениями?   -  person FH-Inway    schedule 21.06.2021


Ответы (1)


Логика, которую вы пытаетесь использовать, не будет работать так, как написано, и на самом деле не имеет смысла. Вы можете попробовать что-то вроде следующего. Это идентифицирует фактические предметы. Ваш код (если он сработал) просто проверяет, есть ли проблемы во всей таблице ActivityLineExtraLcl.

ActivityLineExtraLcl        ActivityLineExtraLcl;
ActivityLineExtraLcl        ActivityLineExtraLclExists;

while select ItemId from ActivityLineExtraLcl
    group by ItemId
    where ActivityLineExtraLcl.Amount != 0
exists join ActivityLineExtraLclExists
    where ActivityLineExtraLclExists.ItemId         == ActivityLineExtraLcl.ItemId          &&
          ActivityLineExtraLclExists.Amount         != 0                                    &&
         (ActivityLineExtraLclExists.TaxGroup       != ActivityLineExtraLcl.TaxGroup        ||
          ActivityLineExtraLclExists.TaxItemGroup   != ActivityLineExtraLcl.TaxItemGroup)
          
{
    error(strFmt("Item '%1' has different tax values", ActivityLineExtraLcl.ItemId));
}
person Alex Kwitny    schedule 21.06.2021