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

SQL多列Pivot需求:在现有Pivot中新增Date_input列

问题描述

我有如下的Mytable表:

TTIDNoDate_inputBR
10604109878000001/01/2015111
20150600029978000011/07/2022111
10604890378311101/01/2015123
201517300056278311104/25/2023123
10151730079252302/02/2022150
201110598179252303/21/2022150
3034616641316479252304/25/2023150

我当前用以下SQL实现ID列的透视:

select no, br, [1] as ID1, [2] as ID2, [3] as ID3
from (select TT, id, no, Br from Mytable) Table_Pivot
pivot
(min(ID) for TT in ([1] , [2] , [3])) bang

现在需要修改该语句,在透视结果中同时加入Date_input列,得到如下格式的结果:

NoBBrID1Date_input1ID2Date_input2ID3Date_input3
7800001110604109801/01/20150150600029911/07/2022
7831111230604890301/01/201501517300056204/25/2023
7925231500151730002/02/202201110598103/21/2022034616641316404/25/2023
解决方案

方法一:CASE表达式+GROUP BY(推荐)

通过CASE表达式分别匹配不同TT值,提取对应ID和日期,再按No和Br分组聚合,逻辑直观且性能更优:

SELECT
    no AS NoB,
    br,
    MAX(CASE WHEN TT = 1 THEN ID END) AS ID1,
    MAX(CASE WHEN TT = 1 THEN Date_input END) AS Date_input1,
    MAX(CASE WHEN TT = 2 THEN ID END) AS ID2,
    MAX(CASE WHEN TT = 2 THEN Date_input END) AS Date_input2,
    MAX(CASE WHEN TT = 3 THEN ID END) AS ID3,
    MAX(CASE WHEN TT = 3 THEN Date_input END) AS Date_input3
FROM Mytable
GROUP BY no, br
ORDER BY no;

方法二:多次透视后关联

先分别对ID和Date_input做透视,再通过No字段关联结果:

WITH PivotID AS (
    SELECT no, br, [1] as ID1, [2] as ID2, [3] as ID3
    FROM (SELECT TT, id, no, Br FROM Mytable) Table_Pivot
    PIVOT (MIN(ID) FOR TT IN ([1], [2], [3])) AS PivotID
),
PivotDate AS (
    SELECT no, [1] as Date_input1, [2] as Date_input2, [3] as Date_input3
    FROM (SELECT TT, Date_input, no FROM Mytable) Table_Pivot
    PIVOT (MIN(Date_input) FOR TT IN ([1], [2], [3])) AS PivotDate
)
SELECT 
    p1.no AS NoB, 
    p1.br, 
    p1.ID1, 
    p2.Date_input1, 
    p1.ID2, 
    p2.Date_input2, 
    p1.ID3, 
    p2.Date_input3
FROM PivotID p1
JOIN PivotDate p2 ON p1.no = p2.no
ORDER BY p1.no;

两种方法都能得到目标结果,方法一无需子查询和关联,更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:15:20