在 T-SQL 中使用 PIVOT 需要帮助
Posted
技术标签:
【中文标题】在 T-SQL 中使用 PIVOT 需要帮助【英文标题】:Needing assist with using a PIVOT in T-SQL 【发布时间】:2020-12-20 00:58:39 【问题描述】:在我的 T-SQL 代码中,我的结果集显示如下。 RN 是基于 AgentNumber 的 ROW_NUMBER 计数器:
Period AgentNumber LocationName AgencyName MarketingRep RTR Quotes RN
------ ----------- ------------ ---------- ------------ --- ------ --
Jan-20 123 Acme Acme csmith 4 0 1
Feb-20 123 Acme Acme csmith 8 50 2
Jan-20 456 ZZZ ZZZ bbaker 12 0 1
Feb-20 456 ZZZ ZZZ bbaker 85 5 2
我一直在尝试在谷歌上寻求帮助,但在使用 PIVOT 拥有多个 SUM 列时遇到了困难。任何帮助/方向将不胜感激。谢谢。
以下是我试图让我的结果集如下所示:
Jan-20 Feb-20
AgentNumber LocationName AgencyName MarketingRep RTR Quotes RTR Quotes
----------- ------------ ---------- ------------ --- ------ --- ------
123 Acme Acme csmith 4 0 8 50
456 ZZZ ZZZ bbaker 12 0 85 5
这是我的 T-SQL,我正在努力将 Period 列跨越到它自己的行以及 RTR 列开始的位置之上。
这是我的 T-SQL 代码:
SELECT mde.[Period]
, l.AgentNumber, l.LocationName, l.AgencyName, l.MarketingRep
, mde.RealTimeRateQuotes
, mde.Quotes
, mde.RN
FROM #tempMonthlyDataElements mde
LEFT JOIN #tempUWIssues i
ON mde.AgentID = i.AgentSysID
AND mde.[Year] = i.[Year]
AND mde.[Period] = i.[Period]
AND mde.RN = i.RN
LEFT JOIN #tempPaperlessEFTPercentages pep
ON mde.AgentID = pep.AgentSysID
AND mde.[Year] = pep.[Year]
AND mde.[Period] = pep.[Period]
AND mde.RN = pep.RN
LEFT JOIN #tempAgentNewRenewalCommissionRates acr
ON mde.AgentID = acr.AgentSysID
LEFT JOIN #tempLocations l
ON mde.AgentID = l.AgentSysID
LEFT JOIN #tempLastNoteInfo lni
ON l.LocationID = lni.LocationID
ORDER BY AgentSysID asc, mde.RN asc;
【问题讨论】:
【参考方案1】:您可以使用条件聚合:
select mde.Period,
l.AgentNumber, l.LocationName, l.AgencyName, l.MarketingRep,
MAX(CASE WHEN mde.Period = 'Jan-20' THEN mde.RealTimeRateQuotes END) as jan_20_rtr,
MAX(CASE WHEN mde.Period = 'Jan-20' THEN mde.Quotes END) as jan_20_quote,
MAX(CASE WHEN mde.Period = 'Jan-20' THEN mde.RealTimeRateQuotes END) as feb_20_rtr,
MAX(CASE WHEN mde.Period = 'Jan-20' THEN mde.Quotes END) as feb_20_quote
from ...
group by mde.Period
注意:您真的以这种格式存储期间吗?那应该是date
。
【讨论】:
感谢您的回复,不幸的是,这是用户想要的格式。有没有办法使用 PIVOT 功能做到这一点?谢谢。以上是关于在 T-SQL 中使用 PIVOT 需要帮助的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 T-SQL 查询中使用 Levenshtein 距离 - 请帮助优化