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

如何用T-SQL PIVOT将多行记录转单行并获取对应日期

解决PIVOT转换时同时获取字符值与对应日期的问题

你当前的PIVOT查询仅对ADHOC_CHAR_VAL字段做了聚合,没有处理EFF_DATE,因此无法得到CHAR_TYPE为'E'和'CO'对应的日期值。要实现同时获取各类字符值及对应日期的需求,需要在PIVOT中同时对两个字段进行聚合操作。

修改后的查询代码

SELECT 
  ACCT,
  C_val AS C,
  M_val AS M,
  E_val AS E,
  CO_val AS CO,
  E_date AS E_DATE,
  CO_date AS CO_DATE
FROM 
(
  SELECT 
    ACCT, 
    CHAR_TYPE, 
    ADHOC_CHAR_VAL,
    EFF_DATE
  FROM ACCT
)  
PIVOT
(
  MIN(ADHOC_CHAR_VAL) AS val,
  MAX(EFF_DATE) AS date
  FOR CHAR_TYPE IN ('C' AS C, 'M' AS M, 'E' AS E, 'CO' AS CO)
)
WHERE (C_val IS NOT NULL OR M_val IS NOT NULL OR E_val IS NOT NULL OR CO_val IS NOT NULL)

代码说明

  • 在PIVOT子句中同时定义两个聚合逻辑:用MIN(ADHOC_CHAR_VAL)获取各CHAR_TYPE对应的字符值,用MAX(EFF_DATE)获取对应日期(若同ACCT同CHAR_TYPE有多条日期记录,MAX取最新值,可根据业务需求替换为MIN)
  • 通过AS val和AS date为每个CHAR_TYPE的聚合结果添加后缀,避免字段名冲突
  • 最终结果中,E_date和CO_date分别对应CHAR_TYPE为'E'和'CO'的日期值,同时保留原有的C、M、E、CO字符值列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:01:10