sql - MS SQL 合并同一张表的水平选择结果
问题描述
我有一个包含以下列的表:时间、投资组合 ID、MTD,其中每个投资组合 ID 的 MTD 随时间而变化。我想创建一个显示以下内容的选择:portfolioID、时间 1 的 MTD、时间 2 的 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,这更繁琐且高度依赖数据库。
推荐阅读
- python - 如何确保 io 模块在关闭垃圾收集之前没有关闭
- android - 单击条形图条目时如何获取标签图例?
- telegram - 使用 API (PHP) 1 小时后在 Telegram 频道中编辑帖子
- mailchimp - 在 mailchimp 帐户下可以管理哪些兴趣类别?
- c - 当我以写入模式打开文件时,文件是否加载到 RAM 中?
- linux - 关于预期行为的一般信号问题
- startup - 有没有办法根据 FastAPI 启动事件的条件取消启动?
- c# - 如何捕获登录PC的Microsoft帐户信息
- python - Python Opencv-python 运行时崩溃
- python - Python while循环输出到列表