如何解决MS SQL水平合并同一表的选择结果
我有一个带有以下各列的表:时间,投资组合ID,MTD,其中每个投资组合ID的MTD随着时间而变化。我想创建一个显示以下内容的选择:PortfolioID,time1的MTD,time2的MTD等。
我不知道如何获得以下结果:
请告知!
解决方法
如果您事先知道可能的time
值,则可以使用条件聚合:
select
portfolioid,max(case when time = '20200803' then mtd end) mdt_for_20200803,max(case when time = '20200804' then mtd end) mdt_for_20200804,max(case when time = '20200805' then mtd end) mdt_for_20200805
from mytable
group by portfolioid
您可以使用更多条件表达式扩展select
子句以处理更多可能的值。
如果您事先不知道这些值,那么纯SQL将无法执行您想要的操作(查询总是返回相同的列集)。您需要更加繁琐且高度依赖数据库的动态SQL。
,您可以使用数据透视
25%
这里使用Max(MTD),因为如果您重复/重复相同的行,则将需要选择单个值(Max或SUM或AVG等)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。