[英]How to create pivot table in SQL Server
Currently my T-SQL statement,目前我的 T-SQL 语句,
SELECT
ep.AgentOwnerName, ep.AgencyName, ep.LocationName, ep.AgentNo,
ep.TY, ROUND(ROUND(CAST(ep.EP as money), -1), 0) as EP,
ROUND(ROUND(CAST(il.[Incurred Loss] as float), -1), 0) as [Incurred Loss],
CONCAT(CAST((ROUND(ROUND(CAST(il.[Incurred Loss] as float), -1), 0) / ROUND(ROUND(CAST(ep.EP as float), -1), 0) + 0.085) * 100.0 as decimal(10, 0)), '%') as [Loss Ratio with LAE]
FROM
#tempEarnedPremiumByTreatyYearAgentOwner ep
LEFT OUTER JOIN
#tempIncurredLossByTreatyYearAgentOwner il ON ep.AgencySysID = il.AgencySysID
AND ep.LocationSysID = il.LocationSysID
AND ep.TY = il.TY
WHERE
(ep.EP > 0 AND il.[Incurred Loss] > 0)
AND ep.TY IN ('16-17', '17-18', '18-19', '19-20', '20-21')
ORDER BY
ep.AgentOwnerName ASC, ep.AgencyName ASC, ep.LocationName ASC,
ep.AgentNo ASC, ep.TY ASC;
Creates this output:创建此 output:
And I'm needing the results to be displayed in this format:我需要以这种格式显示结果:
Any suggestions/direction would be greatly appreciated.任何建议/方向将不胜感激。 I've tried doing this in SSRS but adding multiple column groups seems fairly difficult in SSRS.
我已经尝试在 SSRS 中执行此操作,但在 SSRS 中添加多个列组似乎相当困难。 Thanks.
谢谢。
Answer updated.答案已更新。
Wrap your query in a CTE, then use sum(case when...)
:将您的查询包装在 CTE 中,然后使用
sum(case when...)
:
with cte as (
SELECT
ep.AgentOwnerName, ep.AgencyName, ep.LocationName, ep.AgentNo,
ep.TY, ROUND(ROUND(CAST(ep.EP as money), -1), 0) as EP,
ROUND(ROUND(CAST(il.[Incurred Loss] as float), -1), 0) as [Incurred Loss],
CONCAT(CAST((ROUND(ROUND(CAST(il.[Incurred Loss] as float), -1), 0) / ROUND(ROUND(CAST(ep.EP as float), -1), 0) + 0.085) * 100.0 as decimal(10, 0)), '%') as [Loss Ratio with LAE]
FROM #tempEarnedPremiumByTreatyYearAgentOwner ep
LEFT OUTER JOIN #tempIncurredLossByTreatyYearAgentOwner il
ON ep.AgencySysID = il.AgencySysID
AND ep.LocationSysID = il.LocationSysID
AND ep.TY = il.TY
WHERE (ep.EP > 0 AND il.[Incurred Loss] > 0)
AND ep.TY IN ('16-17', '17-18', '18-19', '19-20', '20-21')
)
select AgentOwnerName,
AgencyName,
LocationName,
AgentNo,
sum(case when TY = [16-17] then [EP] else 0 end) as [Earned Premium 16-18],
...,
sum(case when TY = [16-17] then [Incurred Loss] else 0 end) as [Incurred Loss 16-17],
sum(case when TY = [17-18] then [Incurred Loss] else 0 end) as [Incurred Loss 17-18],
...,
from cte
group by AgentOwnerName,
AgencyName,
LocationName,
AgentNo;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.