Я пытаюсь на лету создать конвертацию валют из входных данных многих валют (строки InvoicesHeaders имеют разные валюты, поэтому в каждой строке есть сумма и код валюты для этой суммы) и выходные данные многих валют (каждый филиал хочет видеть цифры с это собственная валюта).
Поэтому я получаю много-много, соединяю таблицу InvoiceTable и таблицу валют. Чтобы присоединиться к ним, я создаю в SQL объединенное поле с днем и кодом валюты.
Затем (повторное использование учебника из inte rnet) я создаю вычисление, выполняя поиск из счета-фактуры к курсу.
Amount adj:=SUMX(Invoices,Invoices[TotalInvoiceAmount]/LOOKUPVALUE(ExchangeRatesPerDay[Rate],ExchangeRatesPerDay[ToCurrencyConcatenatedday112],Invoices[CurrencyCodeConcatenateInvoiceDate112]))
Однако, когда я пытаюсь использовать эту меру в excel (фильтрация по одной валюте за раз), я получаю сообщение об ошибке, в котором много строк пропущено, но ожидалась только одна.
Из сообщения об ошибке похоже, что поиск получает несколько значений, что странно, потому что в Excel я фильтрую по одной валюте. Поэтому для каждой комбинации день + код валюты есть только одна строка. Я проверяю SQL, используя этот запрос
with cte as (
SELECT [RateTypeName]
,[FromCurrency]
,[ToCurrency]
,[StartDate]
,[Rate]
,[EndDate]
,[ConversionFactor]
,[RateTypeDescription]
,[dday]
,[dday112]
,[ToCurrencyConcatenatedday112]
,[FromCurrencyConcatenatedday112]
, count(*) over (partition by [ToCurrencyConcatenatedday112],FromCurrency ) as co
FROM [stg].[ExchangeRatesPerDay]
)
select * from cte where co>1
И он не возвращает никаких записей.
Буду признателен за любую вашу идею.
С уважением
Винсент