分享实例------SQL实现行转列再加合计列

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:3

分享实例------SQL实现行转列再加合计列

      这是自己写的一个真实需求,根据生产入库单的物料辅助属性按时间统计,日期由行转列并完成统计数;

点赞+收藏不会迷路!!!


CREATE PROCEDURE [dbo].[DB_PRO_HJTJ]    ---创建存储过程

---定义两个变量用来作为查询条件

     @BEGDATE  date, 

     @ENDDATE  date

AS 

Begin

  Set NoCount On 

  --创建临时表

Create table #RZLBHJBZTJB (名称Varchar(500),重量 decimal(28, 4),日期 Varchar(7))

    --插入数据

Insert into #RZLBHJBZTJB (名称,重量,日期)

select ts.FNUMBER,SUM(ic.FREALQTY) FREALQTY,CONVERT(varchar(7),i.FDate, 120) FDate

from T_PRD_INSTOCK i inner join

    T_PRD_INSTOCKEntry ic on i.FID=ic.FID inner join

T_BD_FLEXSITEMDETAILV TV ON IC.FAUXPROPID=TV.FID INNER JOIN

abc_t_Cust100016 ts on  TS.FID=TV.FF100006

WHERE i.FDATE>=@BEGDATE and i.FDATE<=@ENDDATE   --用replace转换成两位数

group by TS.FNUMBER,FDate

ORDER BY TS.FNUMBER


declare @Cols NVARCHAR(max);

declare   @sql NVARCHAR(max)

SELECT @Cols = stuff((select distinct ', '+QUOTENAME(Rtrim([日期])) from #RZLBHJBZTJB 

WHERE 日期>=CONVERT(varchar(7),@BEGDATE, 120) and 日期<=CONVERT(varchar(7),@ENDDATE, 120) for xml path(''),TYPE).value('.','NVARCHAR(MAX)'), 1, 2,'')

set @sql = '

SELECT 合金, '+@Cols+', 总重量

        FROM   (SELECT 总重量 = Sum(重量)OVER(partition BY 名称),*

                FROM   #RZLBHJBZTJB) R 

       PIVOT ( Sum(重量) FOR [日期] IN ('+@Cols+') ) pvt  ' 


EXECUTE sp_executesql @Sql

Drop table #RZLBHJBZTJB  Set NoCount Off

END

GO

--执行存储过程

EXEC ZJX_PRO_HJTJ @BEGDATE ='2023-01-01',@EndDate='2023-06-30'



以下是效果图:


image.webp




image.webp

这怎么解决,我这是移动sql报表


透视表可以搞定

分享实例------SQL实现行转列再加合计列

这是自己写的一个真实需求,根据生产入库单的物料辅助属性按时间统计,日期由行转列并完成统计数;点赞+收藏不会迷路!!!CREATE...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息