SQL行转列后,列数为动态,请问要怎么在FINEREPORT报表上体现(我的是9.0版本)

如图,比较“数学”,“英语”、“语文”这些科目为动态生成,列数不定,我要怎么报表上拉格式

DECLARE @sql VARCHAR(8000) SET @sql = 'SELECT [UserName],'    SELECT @sql = @sql + 'SUM(CASE [Subject] WHEN '''+[Subject]+''' THEN [Source] ELSE 0 END) AS '''+QUOTENAME([Subject])+''','    FROM (SELECT DISTINCT [Subject] FROM [TestRows2Columns]) AS a      SELECT @sql = LEFT(@sql,LEN(@sql)-1) + ' FROM [TestRows2Columns] GROUP BY [UserName]'    PRINT(@sql) EXEC(@sql)

image.png

image.png

FineReport ERP 发布于 2022-1-5 19:30 (编辑于 2022-1-6 16:23)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-1-5 20:42
最佳回答
0
檬茶茶Lv4初级互助
发布于2022-1-6 08:45

科目设置横向扩展

最佳回答
0
hfjsiwbdhxLv5初级互助
发布于2022-1-6 16:36

你这个我看上去根本不需要用行转列或者列转行来在SQL里面做成报表的样子。 

建议用过滤,这个是帆软的好处,这种格式的报表我写过很多,建议姓名的查询做一个数据集(纵向)A,科目单独做一个数据集(横向)B,然后中间的数据再做一个查询数据集(人、科目、成绩)C。然后C和A和B做过滤

  • 4关注人数
  • 362浏览人数
  • 最后回答于:2022-1-6 16:36
    请选择关闭问题的原因
    确定 取消
    返回顶部