我的第一个表 dbo.Port
包含每个投资组合的聚合细节。
Portfolio Yield Duration Coupon
Port1 0.62 1.10 0.98
Port2 0.52 0.91 2.46
Port3 0.40 0.70 0.37
我的第二张表 dbo.Security
包含有关每个投资组合的个别证券的详细信息。
Portfolio Security Yield Duration Coupon Country Sector MarketValue
Port1 Sec1 0.35 0.50 2.25 US CORP 386.17
Port1 Sec2 0.16 0.23 1.75 UK CORP 224.64
Port1 Sec3 0.98 1.96 3.00 US CORP 148.00
Port1 Sec4 0.78 1.40 0.00 DE SOV 980.07
Port2 Sec1 0.35 0.50 2.25 US CORP 386.17
Port2 Sec3 0.98 1.96 3.00 US CORP 148.00
Port3 Sec1 0.35 0.50 2.25 US CORP 386.17
Port3 Sec4 0.78 1.40 0.00 DE SOV 980.07
Port3 Sec5 0.03 0.06 0.00 DE SOV 952.36
我可以通过以下单独的查询检索到投资组合1的模态国家,即US
SELECT x.Country
FROM (
SELECT TOP 1 COUNT(dbo.Security.Country) as Count ,dbo.Security.Country
FROM dbo.Port
INNER JOIN dbo.Security ON (dbo.Port.Portfolio = dbo.Security.Portfolio)
WHERE dbo.Port.Portfolio = 'Port1'
GROUP BY dbo.Security.Country
ORDER BY Count DESC
) x
我希望我的查询结果返回一个连接查询,选择每个组合的国家和行业的模态值。有人知道如何将这个查询整合到第一个查询中或者其他方法,以便我可以检索每个组合的
MODE(dbo.Security.Country)
等内容,并得到下面的表格。请注意保留HTML标记。Portfolio Yield Duration Coupon Market Value Country Sector
Port1 0.62 1.10 0.98 1738.88 US CORP
Port2 0.52 0.91 2.46 534.17 US CORP
Port3 0.40 0.70 0.37 2318.60 DE SOV
期望的SQL
SELECT
dbo.Port.Portfolio
,dbo.Port.Yield
,dbo.Port.Duration
,dbo.Port.Coupon
,SUM(dbo.Security.MarketValue)
--Not working
,MODE(dbo.Security.Country)
,MODE(dbo.Security.Sector)
--Not working
FROM dbo.Port
INNER JOIN dbo.Security ON (dbo.Port.Portfolio = dbo.Security.Portfolio)
GROUP BY
dbo.Port.Portfolio
,dbo.Port.Yield
,dbo.Port.Duration
,dbo.Port.Coupon