在sql server 2008中汇总枢轴值

问题描述 投票:0回答:1
 Select * From
         (SELECT convert(varchar,SUM(distance)) 
              As total_distance, DAY(start_time) Days 
            FROM t1
           Where id=6314 
             And start_time 
         Between '2018-02-01 18:30:00' 
             And '2018-02-09 18:00:00'
    GROUP BY DAY(start_time)
         ) d
         pivot
          (Max(total_distance)
           For Days in ([3],[4],[5],[6],[7],[8],[9])
          ) piv;


results-
3   4   5         6      7        8      9
0   0   50.2    44.32   42.34   43.38   41.32

我想要这些值的和列以及这个结果,如: -

sum    3    4   5        6        7         8    9
221.56 0    0   50.2    44.32   42.34   43.38   41.32
sql-server sum pivot
1个回答
0
投票

将以下内容添加到查询的结果集中:CROSS APPLY部分。

    ;WITH t ([3] ,[4]  ,[5] ,[6] , [7], [8] ,[9])  as
    (
    SELECT 0 ,  0 ,  50.2 ,   44.32 ,  42.34 ,  43.38 ,  41.32
    )
    SELECT * 
     FROM t
        CROSS APPLY 
        (SELECT SUM(x.Val) 
        FROM 
            (
            VALUES ([3]),([4]),([5]),([6]),([7]),([8]),([9])
            ) X (VAL)
            ) P(SVal)

这是您输入的查询:

    ;WITH Pvt as 
    (
    select * from
    (SELECT convert(varchar,SUM(distance)) as total_distance, DAY(start_time) Days 
        FROM t1
        where id=6314 and start_time between '2018-02-01 18:30:00' and '2018-02-09 18:00:00'
        GROUP BY DAY(start_time)
    ) d
        pivot
        (max(total_distance)
        for Days in ([3],[4],[5],[6],[7],[8],[9])
        ) piv
    )
            SELECT * 
             FROM Pvt
                CROSS APPLY 
                (SELECT SUM(x.Val) 
                FROM 
                    (
                    VALUES ([3]),([4]),([5]),([6]),([7]),([8]),([9])
                    ) X (VAL)
                    ) P(SVal)
© www.soinside.com 2019 - 2024. All rights reserved.