【问题标题】:Need Help about multiple pivot需要关于多支点的帮助
【发布时间】:2017-11-27 02:48:59
【问题描述】:

我需要从以下数据中获取pivot 数据:

AssetNo  EffectiveDate     Schedule         Interval
AIRT01      2017-11-23      2017-11-23  
AIRT01      2017-11-23      2017-12-23  
AIRT01      2017-11-23      2018-01-23  
AIRT01      2017-11-23      2018-02-23          3M
AIRT01      2017-11-23      2018-03-23  
AIRT01      2017-11-23      2018-04-23  
AIRT01      2017-11-23      2018-05-23          3M, 6M
AIRT01      2017-11-23      2018-06-23  
AIRT01      2017-11-23      2018-07-23  
AIRT01      2017-11-23      2018-08-23          3M
AIRT01      2017-11-23      2018-09-23  
AIRT01      2017-11-23      2018-10-23  
AIRT01      2017-11-23      2018-11-23          3M, 6M, 1Y

需要这样的输出:

    AssetNo EffectiveDate Nov-2017 Dec-2017 Jan-2018 Feb-2018 ... May-2018 ... Nov-2018
    AIRT01    2017-11-23                                3M         3M, 6M     3M, 6M, 1Y

是否有可能获得多个pivot(用于计划和间隔)?

【问题讨论】:

    标签: sql-server pivot


    【解决方案1】:

    试试这个答案:

    DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX);
    SET @cols = STUFF(
                     (
                         SELECT DISTINCT 
                                ','+QUOTENAME(RIGHT(CONVERT(VARCHAR, c.Schedule,113),8))
                                --','+QUOTENAME(c.Schedule)
                         FROM MyTab c FOR XML PATH(''), TYPE
                     ).value('.', 'nvarchar(max)'), 1, 1, '');
    SET @query = 'SELECT [AssetNo],EffectiveDate, '+@cols+'from (SELECT 
               [AssetNo],
               EffectiveDate,
               [Interval] AS [amount],
               RIGHT(CONVERT(VARCHAR, Schedule,113),8) AS [category]
        FROM MyTab
        )x pivot (max(amount) for category in ('+@cols+')) p';
    EXECUTE (@query);
    

    希望对你有所帮助。

    输出

    AssetNo EffectiveDate Nov 2017 Dec 2017 Jan 2018 Feb 2018 ... May 2018 ... Nov 2018
    AIRT01    2017-11-23                                3M         3M, 6M     3M, 6M, 1Y
    

    【讨论】:

    • 可以在@cols 中设置顺序吗?因为按字母顺序的输出从 apr 到 sept 开始?
    猜你喜欢
    • 2014-03-11
    • 2014-09-25
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2020-03-07
    • 2017-08-05
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多