Мне нужно отделиться от Таблицы 1, Col1, которая содержит «валюта» и «значение» или «;».
Table1
Col1
GBP;185.00
EUR;152.46
;
SEK;364.55
USD;364.55
Затем в Таблице 2 я использую 'CurrCode' для объединения с 'Значением' из Таблицы 1.
Table2
CurrValue CurrCode
11.01 GBP
NULL EUR
---
9.44 SEK
9.01 USD
Я строю этот код, но объем данных слишком велик, онработает только до 9000 столбцов и затем вылетает.Есть ли способ обойти это?
SELECT
Col1
,(reverse(substring(reverse(Col1),0,charindex(';',reverse(Col1))))) as LocalValue
,c.currVALUE
,substring(Col1,1,charindex(';',Col1)-1) as Currency
,case when Col1 like 'EUR;%' then (reverse(substring(reverse(Col1),0,charindex(';',reverse(Col1)))))
else try_convert(numeric(18,5),(reverse(substring(reverse(Col1),0,
charindex(';',reverse(Col1))))))* c.CurrValue
end as ValueEUR
from b
left join c
on c.CurrencyCode = substring(Col1,1,charindex(';',Col1)-1)
Желаемым результатом является таблица, которая показывает CurrValue, Currecy и ValueEUR (где 'CurrValue' * 'Localvalue' = 'ValueEUR'):
LocalValue Currency ValueEUR
185.33 GBP 2040.48
152.46 EUR 152.46
0 --- 0
364.55 SEK 3441.35
364.55 USD 3284.60
ПРИМЕЧАНИЕ. Если для валюты выбрано EUR, CurrValue равно NULL, а ValueEUR совпадает с LocalValue.