【问题标题】:Pivot with sum aggregation使用总和聚合进行透视
【发布时间】:2015-09-23 11:21:38
【问题描述】:

我有一个作为 tab1 的表,我希望在每个销售人员的净产品销售额 (NPS) 上获得类似 tab-2 的结果,以及 1 月的第 1 个月值,类似的 2 月的第 2 个月的值和 3 月的第 3 个月的值。

FY 是 jan+feb+mar (NPS) 的总和

DECLARE @TAB1 TABLE
(
   YEAR  NUMERIC (4, 0),
   MONTH NUMERIC (4, 0),
   SMC   CHAR (1),
   SG    CHAR (1),
   SPN   VARCHAR (10),
   ISGR  FLOAT,
   NPS   FLOAT
) 


INSERT @TAB1
SELECT 2015,    2,  1,  'C',    11, 1,  232745.61 
UNION ALL
SELECT 2015,    1,  1,  'C',    11, 1,  246328.04 
UNION ALL
SELECT 2015,    3,  1,  'C',    11, 1,  447488.01

预期输出:

YEAR|MONTH|SMC|SG|SPN|ISGR|JAN      |FEB      |MAR      |FY
2015|1    |1  |C |11 |1   |246328.04|232745.61|447488.01|926561.66

【问题讨论】:

    标签: sql


    【解决方案1】:

    试试下面的查询:

    SELECT YEAR,SMC,SMC,SG,SPN,ISGR,[1] AS [JAN],[2] AS [FEB],[3] AS [MAR] , [1] + [2] + [3] AS [FY]
    FROM @TAB1
    PIVOT
    (   
        SUM(NPS)
        FOR [MONTH] IN ([1],[2],[3])
    )AS pvt
    

    注意:Result 中不包含 [Month] 列,因为它用于透视。

    【讨论】:

    • 很抱歉,但这并没有给出正确的结果。许多 null 出现而不是正确的值。值仅在一列中可用。 1 月 2 月 3 月 4 月 5 月 6 月 7 月 8 月 9 月 10 月 11 月 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 793498.2。任何建议。
    • 这工作正常。检查这个 sql 小提琴:sqlfiddle.com/#!3/9eecb7/1562。如果您想添加更多月份,则应将其添加到列表中 FOR [MONTH] IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]) 并选择与我选择 [1] AS [JAN] 的方式相似的那些。
    • 嗨,Deepak,我做了这样的事情。选择 YEAR、SMC、SG、SPN、[ISGR]、[1] AS [JAN]、[2] AS [FEB]、[3] AS [MAR],[4] 作为 [APR],[5] AS [MAY],[6] AS [JUNE],[7] AS [JULY],[8] AS [AUG],[9] AS SEP, [10] 十月,[11] 十一月,[12] 十二月,[1] + [2] + [3] + [4] + [5] + [6] + [7] + [8] + [9] + [10] + [11] + [12] 作为 [FY] 来自 TEMP PIVOT ( SUM([NPS]) FOR [MONTH] IN ([1],[2],[3],[4] ,[5],[6],[7],[8],[9],[10],[11],[12]) )AS pvt,但月份字段为 NULL,请建议。
    • 你能用你的查询为几个月返回 NULL 的数据制作一个 sqlfiddle,以便我可以更准确地调试吗?因为它应该有效。
    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2019-10-14
    • 2018-04-20
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多