下面SQL行转列怎么多加一列总计 返回

SqlSugar 老数据
1 1022
  1. 要生成的SQL语句

SELECT ourpivot.hour, ourpivot.c3, ourpivot.c2, ourpivot.c1, ISNULL(c1, 0) + ISNULL(c2, 0) + ISNULL(c3, 0)  as total 

FROM  

(

    SELECT DATEPART(hour, B.createTime) hour ,t2. PayName, sum(amount) money 

    FROM  t1 B   

LEFT JOIN t2 t2

    ON b.subtype = T2.subtype

    GROUP BY PayName ,DATEPART(hour, B.createTime)

) t

pivot (sum(money) for t.PayName in (c1,c2,c3)) as ourpivot  

order by hour


2. orm表达式

            var t1 = PayRepository.Queryable()

                .LeftJoin<PayChannel>((pay, t2) => pay.Subtype == t2.Subtype)

                .Select((pay, t2) => new

                {

                    PayName = t2.PayName,

                    Amount = pay.Amount,

                    hour = pay.CreateTime.Hour

                })

                .MergeTable()

                .GroupBy(it => new { it.hour, it.PayName })

                .Select(it => new

                {

                    it.PayName,

                    amount = SqlFunc.AggregateSum(it.Amount),

                    it.hour,

                }).OrderBy(it =>it.hour);


            var result = t1

                .ToPivotJson(x => x.PayName, x => x.hour, it => it.Count() > 0 ? it.Sum(x => x.amount) : 0);


无法实现自动添加的列total  查询出来

热忱回答(1)

  • fate sta fate sta VIP0
    2023/2/15

    ToPivotJson 里面可以 new {it.name,it.name2} 这样可以加列

    0 回复