2016-09-12 3 views
0

У меня есть запрос, который выбирает из таблицы, содержащей дату, валюту, mvcleanccy и spotsek.Присоедините сводные таблицы, переименуйте столбцы. SQL

Вопрос 1. Как переименовать столбцы с DKK, EUR ... на DKK_MV, EUR_MV.

Вопрос 2. У меня одинаковый шарнир с той лишь разницей, что 'MV_SEK' = mvcleanccy*spotsek заменен на MV = mvcleanccy. Если я хочу присоединиться к этим двум опорным точкам в позиции даты в запросе, как мне это сделать без создания двух отдельных таблиц и последующего присоединения?

SELECT * 
FROM(
SELECT 
    currency 
    ,'MV_SEK' = mvcleanccy*spotsek 
    ,todaypositiondate 
from T1 
) as src 
PIVOT 
(
sum(MV_SEK) 
for 
currency in ([DKK], [EUR], [NOK], [SEK], [USD]) 
) 
as pivottable 
Order by todaypositiondate desc 
+3

Вопрос 2 совершенно неясно –

+0

я перефразировать в настоящее время. – Haggan

+0

Какая СУБД вы используете? Ваш запрос является нестандартным SQL. –

ответ

2
SELECT currency, [DKK] as [DKK_MV], [EUR] as [EUR_MV], [NOK] as [NOK_MV], [SEK] as [SEK_MV], [USD] as [USD_MV] -- this should rename the columns as per question 1 

FROM(
SELECT 
    currency 
    ,'MV_SEK' = mvcleanccy*spotsek 
    ,todaypositiondate 
from T1 
) as src 
PIVOT 
(
sum(MV_SEK) 
for 
currency in ([DKK], [EUR], [NOK], [SEK], [USD]) 
) 
as pivottable 
Order by todaypositiondate desc 
1

Я думаю, что ваше решение будет проще с условной агрегации:

select todaypositiondate, 
     sum(case when currency = 'DKK' then mvcleanccy * spotsek end) as dkk_mv, 
     sum(case when currency = 'EUR' then mvcleanccy * spotsek end) as eur_mv, 
     . . . 
     sum(case when currency = 'DKK' then mvcleanccy end) as dkk, 
     sum(case when currency = 'EUR' then mvcleanccy end) as eur, 
     . . . 
from t1 
group by todaypositiondate 
order by todaypositiondate; 
+0

Спасибо! Намного лучше. – Haggan

Смежные вопросы