You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关联首列并通过Unpivot实现宽表转窄表?

解决方案

你可以通过以下两种正确的SQL写法实现需求:

方法一:使用UNION ALL

这种方法逻辑直观,分别提取每个日期列的数据后合并:

SELECT CASA, '31-jan-2023' AS Date, "31-jan-2023" AS Deposit
FROM casadeposits
UNION ALL
SELECT CASA, '28-Feb-2023' AS Date, "28-Feb-2023" AS Deposit
FROM casadeposits
ORDER BY CASA, Date;

方法二:使用UNPIVOT

如果你的数据库支持UNPIVOT(如SQL Server、Oracle等),可以用更简洁的写法:

SQL Server版本

SELECT CASA, Date, Deposit
FROM casadeposits
UNPIVOT (
    Deposit FOR Date IN ([31-jan-2023], [28-Feb-2023])
) AS unpvt
ORDER BY CASA, Date;

Oracle版本

SELECT CASA, Date, Deposit
FROM casadeposits
UNPIVOT (
    Deposit FOR Date IN ("31-jan-2023", "28-Feb-2023")
)
ORDER BY CASA, Date;

注意事项:

  • 替换casadeposits为你实际的表名
  • 日期列名作为字段名时,需要用对应数据库的转义符包裹(SQL Server用[],Oracle用"")
  • 执行后按CASA和Date排序即可得到预期的输出结构

内容的提问来源于stack exchange,提问作者Nauman Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:13:29