在select语句(Join Table)中选择SQL

时间:2016-07-29 07:38:09

标签: sql-server-2008 stored-procedures group-by left-join

我应该使用什么选择语句来获得如下结果:

I want this

目前,当我在下面运行我的存储过程时,它将显示“结果”图像:

select vm.ID_Vendor,vm.Vendor_Name,vpe.Company_Name,vpe.TOTAL,
vpe.COUNT,vpe.AVERAGE from VENDOR_MASTER vm
LEFT JOIN
(select vvd.ID_Vendor,sc.ID_Company,sc.Company_Name,vvd.VPE_Average_Score,
SUM(vvd.VPE_Average_Score) AS TOTAL,COUNT(vvd.VPE_Total_Score) AS COUNT,
(SUM(vvd.VPE_Average_Score)/COUNT(vvd.VPE_Total_Score)) AS AVERAGE,
vvm.Assessor_Name FROM VENDOR_VPE_MASTER vvm
left join VENDOR_VPE_DETAIL vvd on vvm.ID_VPE_Master=vvd.ID_VPE_Master
left join SETUP_COMPANY sc on vvm.ID_Company=sc.ID_Company
left join REF_EVL_RATING rer1 on vvd.Quality_Product=rer1.ID_Evl_Rating
left join REF_EVL_RATING rer2 on vvd.Service=rer2.ID_Evl_Rating
left join REF_EVL_RATING rer3 on vvd.Technical=rer3.ID_Evl_Rating
left join REF_EVL_RATING rer4 on vvd.Quality_Mgmt=rer4.ID_Evl_Rating
left join REF_EVL_RATING rer5 on vvd.Price=rer5.ID_Evl_Rating
GROUP BY vvd.ID_Vendor,sc.ID_Company,sc.Company_Name,vvd.VPE_Average_Score,
vvd.VPE_Average_Score,vvd.VPE_Total_Score,vvm.Assessor_Name) as vpe on vm.ID_Vendor=vpe.ID_Vendor
order by vpe.ID_Vendor

Result

1 个答案:

答案 0 :(得分:0)

编辑:现在看来您想要更改GROUP By子句,请参阅下面的评论

这是不可能的,因为SQL Server Management Studio是关于数据和服务器管理的,它不是用于创建报告或导出格式良好的数据(如评论中所述)。但是,如果安装了Excel,则可以从Excel执行查询(数据 - >获取外部数据)。这允许您根据需要格式化标题,并且更容易导出为其他格式(PDF,图像,...)。 作为替代方案,您可以使用Reporting Services来实现这些功能。但是,如果您只需要垂直标题,Excel解决方案将更容易实现。