Эквивалент Cognos функции Excel Sumif() без статической переменной

Вот следующий пример, который я обнаружил, который работает как функция суммирования.

total(
case
when [флаг бесплатности] = 'FALSE'
then [Общая маржа]
else null
end
для [код товара])

Мой вопрос заключается в том, как заменить часть «ЛОЖЬ» и отразить выражение [бесплатный флаг] для этой конкретной строки. Таким образом, по мере построения отчета общее количество в каждой строке может переключаться с общего количества этого кода элемента и флага бесплатности, являющегося ложным, на истинное в зависимости от того, что находится в конкретной строке.

Это не работает, и я считаю, что это может быть невозможно.


person C.Penrod    schedule 23.03.2015    source источник


Ответы (2)


У вас есть [Код товара] в качестве столбца, до которого вы сводитесь, но вы можете выполнить сводку до нескольких столбцов.

Попробуй это:

total([Total Margin] for [Item Code],[free of charge flag])

Это суммирует меру по всем комбинациям [Код товара] и [флажок бесплатности]. Для заданного [кода товара] строки «ИСТИНА» и «ЛОЖЬ» будут иметь свои собственные значения.

Кроме того, если вы не хотите показывать итог, когда значение «ИСТИНА», вы можете обернуть это в оператор CASE:

CASE [free of charge flag]
WHEN 'FALSE' THEN total([Total Margin] for [Item Code],[free of charge flag]) 
ELSE NULL
END

Во всех строках со значением «ЛОЖЬ» будет отображаться общая сумма [Код элемента] этой конкретной строки, а во всех остальных строках будет указано значение NULL.

person Johnsonium    schedule 24.03.2015

Я думаю, вы можете просто вывести его как вычисляемый столбец для каждой строки:

(
case
when [free of charge flag] = 'FALSE'
then [Total Margin]
else null
end
)

А потом просто итого.

person Andrew    schedule 24.03.2015