Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помоги с запросом  [new]
user89
Member

Откуда:
Сообщений: 2083
Здравствуйте! Есть данные из 1С примерно такого вида:
Summacur
1000руб.
1000руб
1000USD
1000EUR

Есть курсы валют
usd_rureur_usdeur_rur
30.25561.335340.4003

Требуется получить каждую сумму в каждой валюте:
Summacursum_rursum_usdsum_eur
1000руб.100033.0524.75
1000руб100033.0524.75
1000USD30255.61000748.90
1000EUR40400.31335.31000

Решил пока так:
declare @kurs table (usd_rur decimal(19,4), eur_usd decimal(19,4), eur_rur decimal(19,4))
insert @kurs values (30.2556, 1.3353, 40.4003)
--select * from @kurs

declare @t table (Summa decimal(19,4), cur varchar(4))
insert @t
  select 1000,'руб.' union all select 1000,'руб' union all select 1000,'USD' union all select 1000,'EUR'
--select * from @t

select t.*,
case
  when t.Cur = 'USD' then t.Summa * kurs.usd_rur
  when t.Cur = 'EUR' then t.Summa * kurs.eur_rur
  else t.Summa
end [sum_rur],
case
  when left(t.Cur,3) = 'руб' then t.Summa / kurs.usd_rur
  when t.Cur = 'EUR' then t.Summa * kurs.eur_usd
  else t.Summa
end [sum_usd],  
case
  when left(t.Cur,3) = 'руб' then t.Summa / kurs.eur_rur
  when t.Cur = 'USD' then t.Summa / kurs.eur_usd
  else t.Summa
end [sum_eur]
from @t t
cross join @kurs kurs

Можно как-нибудь попроще?
SQL 2008
16 янв 13, 15:36    [13779048]     Ответить | Цитировать Сообщить модератору
 Re: Помоги с запросом  [new]
user89
Member

Откуда:
Сообщений: 2083
user89,

ой, тема конечно называется "Помогите с запросом"
16 янв 13, 15:40    [13779098]     Ответить | Цитировать Сообщить модератору
 Re: Помоги с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
join c результатом UNPIVOT-а
16 янв 13, 15:46    [13779164]     Ответить | Цитировать Сообщить модератору
 Re: Помоги с запросом  [new]
user89
Member

Откуда:
Сообщений: 2083
Glory,

спасибо. Попробую в этом направлении.
16 янв 13, 16:12    [13779374]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить