这是我需要根据字段KLA作为权重使某些字段成为加权平均值的初始查询。 KLA是一个varchar领域。
select eer.Market,
eer.KLA,
eer.Term,
case scdesc when 'ics' then 'Act' else eer.ScDesc end as ScDesc,
eer.Term As Term_Anual,
eer.VaMonths,
eer.RentPrice,
eer.BuyPrice,
eer.TransactionID
from View1 eer
WHERE ((@Term = 'Long Term' and Term_Anual > 11)
OR (@Term = 'Short Term' and Term_Anual < 12))
and (ArchiveID in (@ArchiveID))
order by eer.market,
eer.KLA,
eer.ScDesc
这是我第一次尝试加权平均值,因此有一些我不确定的事情。
所以我做的是尝试使用连接创建CTE。
SELECT [base].Market,
[base].MSA,
[base].ArchiveID,
[base].TransactionID
[base].ScDesc,
SUM([base].KLA) * [weighted].KLA / SUM([weighted].KLA) as KLA,
SUM([base].VaMonths) * [weighted].VaMonths / SUM([weighted].VaMonths) as VaMonths,
SUM([base].RentPrice) * [weighted].RentPrice / SUM([weighted].RentPrice) as RentPrice,
SUM([base].BuyPrice) * [weighted].BuyPrice / SUM([weighted].BuyPrice) as BuyPrice
FROM View1 [base]
INNER JOIN
(
select eer.Market,
eer.KLA,
eer.Term,
case scdesc when 'ics' then 'Act' else eer.ScDesc end as ScDesc,
eer.Term As Term_Anual,
eer.VaMonths,
eer.RentPrice,
eer.BuyPrice,
eer.TransactionID
from View2 eer
WHERE((@Term = 'Long Term' and Term_Anual > 11)
OR (@Term = 'Short Term' and Term_Anual < 12))
and (ArchiveID in (@ArchiveID))
order by eer.market,
eer.KLA,
eer.ScDesc
) as [weighted]
另外,我不知道应该在哪里,或者我应该在两个查询中按照KLA进行分组,我想这也是重要的。
在尝试使某些字段(带有SUM的字段)加权时,这看起来是否正确?
我需要第一次握手,因为我不相信我确信我做得对。总和是在金钱,数字等类型的字段中完成的,所以不要担心它们是否是正确的字段类型。其余的[base]字段。没有加权,我不希望那些加权明显,所以在我的外部查询中直接选择它们。