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

SQL动态透视多日期列布局问题:GNetPre关联日期列调整

解决SQL动态透视中关联日期列并合并重复行的问题

你的核心问题在于当前的PIVOT逻辑只针对GAgreeID做了透视,但没有将Name_Eff_Date和Name_Term_Date与对应的GroupNetworkPrefix绑定,直接把日期列放在查询末尾导致每个行只能对应一个前缀的日期,最终出现重复行。要实现每个前缀列后紧跟对应日期列的预期布局,我们需要为每个GroupNetworkPrefix生成一组关联的聚合列,再通过动态SQL拼接实现。

解决方案代码

IF OBJECT_ID('tempdb..##TBL_TEMP') IS NOT NULL DROP TABLE ##TBL_TEMP

DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumnBlocks AS NVARCHAR(MAX)

-- 为每个GroupNetworkPrefix生成对应的GAgreeID、生效日期、终止日期列定义
SELECT @PivotColumnBlocks = COALESCE(@PivotColumnBlocks + ',', '') + 
    QUOTENAME([GroupNetworkPrefix]) + ' = MAX(CASE WHEN [GroupNetworkPrefix] = ' + QUOTENAME([GroupNetworkPrefix], '''') + ' THEN [GAgreeID] END),' +
    QUOTENAME([GroupNetworkPrefix] + '_Eff_Date') + ' = MAX(CASE WHEN [GroupNetworkPrefix] = ' + QUOTENAME([GroupNetworkPrefix], '''') + ' THEN [Name_Eff_Date] END),' +
    QUOTENAME([GroupNetworkPrefix] + '_Term_Date') + ' = MAX(CASE WHEN [GroupNetworkPrefix] = ' + QUOTENAME([GroupNetworkPrefix], '''') + ' THEN [Name_Term_Date] END)'
FROM #ALLGroup
GROUP BY [GroupNetworkPrefix]

-- 构建最终动态SQL,拼接固定列与动态生成的关联列
SET @SQLQuery = N'
SELECT 
    GroupID, 
    Name, 
    GovtID, 
    GTermDate, 
    ' + @PivotColumnBlocks + '
INTO ##TBL_TEMP
FROM #ALLGroup
GROUP BY GroupID, Name, GovtID, GTermDate'

-- 可选:查看生成的动态SQL语句,用于调试
-- SELECT @SQLQuery

-- 执行动态SQL
EXEC sp_executesql @SQLQuery

-- 查看最终结果
SELECT * FROM ##TBL_TEMP

代码说明

  1. 关联列生成:通过CASE+MAX聚合的方式,为每个GroupNetworkPrefix单独生成对应的GAgreeID、生效日期、终止日期列,确保每个前缀的三个列紧密排列。
  2. 避免重复行:通过GROUP BY固定维度列(GroupID、Name、GovtID、GTermDate),确保每个分组仅生成一条记录,彻底解决重复行问题。
  3. 列名可读性:用前缀_Eff_Date和前缀_Term_Date命名日期列,既避免了列名重复报错,又能清晰对应到所属的前缀。

预期结果示例

执行后你会得到类似这样的单条记录布局(列名更清晰):

GroupIDNameGovtIDGTermDateABAB_Eff_DateAB_Term_DateCDCD_Eff_DateCD_Term_DateMMMM_Eff_DateMM_Term_Date
12345James131319999-12-31OHMDFP0000962017-10-019999-12-31OHMDFP0000962017-10-019999-12-31OHMAFP0000552019-01-019999-12-31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:20:42