Использование SQL Server 2012ПРИСОЕДИНИТЕСЬ к двум таблицам для себя и вычислить значение на основе двух
У меня есть две таблицы, которые соединены.
[APXFirm].[AdvApp].[vMarketIndexRate]
[APXFirm].[AdvApp].[vMarketIndex]
Присоединение только эти два я могу получить IndexName, AsofDate и скорость
Однако я хочу, чтобы вычислить взвешенную сумму двух индексов. S & P500, взвешенный по 0,4 и ди-джею. Средний вес - 0,6. Я попробовал запрос ниже и получил результат, но это не смешанная ставка. Это первая скорость индексов.
Например, если на определенную дату SP = 100 и ди-джей = 200 скорость смеси должна быть 40 + 120 = 160
Вот мой запрос
USE APXFIRM
SELECT 'Blend' AS 'IndexName', ir1.AsOfDate,
SUM(ir1.rate*.4+ir2.rate*.6) AS 'blendrate'
FROM [APXFirm].[AdvApp].[vMarketIndexRate] IR1
INNER JOIN [APXFirm].[AdvApp].[vMarketIndex] MI1
ON IR1.indexid = mi1.indexid
INNER JOIN [APXFirm].[AdvApp].[vMarketIndexRate] IR2
ON ir2.indexid = ir1.indexid AND ir2.asofdate = ir1.asofdate
INNER JOIN [APXFirm].[AdvApp].[vMarketIndex] MI2
ON ir2.indexid = ir1.indexid AND ir2.asofdate = ir1.asofdate
WHERE mi1.indexname = 'sp'
AND mi2.indexname = 'djind'
GROUP BY MI1.IndexName ,
IR1.AsOfDate ,
IR1.Rate ,
MI2.IndexName ,
IR2.AsOfDate ,
IR2.Rate
Вот пример всего данные. Обратите внимание, что вес не является фактическим столбцом. Я просто включил его в иллюстративных целях.
IndexName AsOfDate rate weight IndexName AsOfDate rate weight BlendRate
SP500 12/31/2012 100 0.6 DowJones 12/31/2012 90 0.4 96
SP500 1/31/2013 110 0.6 DowJones 1/31/2013 95 0.4 104
SP500 2/28/2013 120 0.6 DowJones 2/28/2013 100 0.4 112
SP500 3/31/2013 130 0.6 DowJones 3/31/2013 110 0.4 122
Вот нужный результат.
IndexName AsOfDate BlendRate
Blend 12/31/2012 96
Blend 1/31/2013 104
Blend 2/28/2013 112
Blend 3/31/2013 122
Можете ли вы добавить пример данных и ожидаемый результат –
Какой результат вы получаете? –
Вы попробовали левое соединение вместо внутреннего соединения? – Spidey