benny111 发表于 2024-5-27 16:37:02

分类汇总请给个解决方案

create view v_SX002
as
selectProjectName,sum(InBrunch) from dsale group by ProjectName where sdate>=@sdate and edate>=@edate
go

我知道视图是不可以传参数的,@sdate和@edate。是不是逼着我去做存储过程写表呢,
1)活字格数据表来源不支持存储过程
2)活字格数据表来源要用存储过程必须用折中方案
        a)存储过程最后把结果插入物理表:弊端如果多人短时间跑同一个存储过程,会把前一个人的数据冲掉的(导出表就错了)
        b)存储过程最后把结果插入JSON:弊端表头自带的筛选与排序功能失效,汇总行失效(https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=218458&page=1#pid802059)
3)是不是一定要买报表控件才能解决,我们只是为了一个查询买不合适。

Nathan.guo 发表于 2024-5-27 16:37:03

benny111 发表于 2024-5-28 09:10
大哥,请看一下,我的SQL里有group by,按你的方法是没有办法用视图与公式的。因为我不知道用户选哪个时 ...
那我们使用统计字段,就可以实现我们的需求呀


豪~豪 发表于 2024-5-27 17:09:32

你可以不写入表,然后存储过程返回数据出来不就可以了{:4_86:}

benny111 发表于 2024-5-27 17:21:13

豪~豪 发表于 2024-5-27 17:09
你可以不写入表,然后存储过程返回数据出来不就可以了

不懂你是说这样吗:存储过程最后把结果插入JSON:弊端表头自带的筛选与排序功能失效,汇总行失效

Nathan.guo 发表于 2024-5-27 17:33:05

create view v_SX002
as
selectProjectName,sum(InBrunch) from dsale group by ProjectName where sdate>=@sdate and edate>=@edate
go首先大佬,我理解咋们的变量是在查询参数中的,既然如此,我们的视图中查询全量数据,然后再页面表格中设置对应“@edate和@sdate”的查询条件即可;

其次,我看咱们得视图接口,完全没必要写视图和存储过程呀,我们可以直接使用统计字段来实现~~
https://www.grapecity.com.cn/solutions/huozige/help/docs/fieldtype/statisticalfield

benny111 发表于 2024-5-28 09:10:57

Nathan.guo 发表于 2024-5-27 17:33
首先大佬,我理解咋们的变量是在查询参数中的,既然如此,我们的视图中查询全量数据,然后再页面表格中设置 ...

大哥,请看一下,我的SQL里有group by,按你的方法是没有办法用视图与公式的。因为我不知道用户选哪个时间段来group by的

benny111 发表于 2024-6-21 14:24:25

Nathan.guo 发表于 2024-5-27 17:33
首先大佬,我理解咋们的变量是在查询参数中的,既然如此,我们的视图中查询全量数据,然后再页面表格中设置 ...

问题是你怎么用视图写IF与循环语句呢,我们报表是十分复杂的,可能要上千行SQL。视图是做不到的。

Nathan.guo 发表于 2024-6-21 19:03:45

benny111 发表于 2024-6-21 14:24
问题是你怎么用视图写IF与循环语句呢,我们报表是十分复杂的,可能要上千行SQL。视图是做不到的。

大佬,了解到咱们有group by的需求之后,就推荐大佬使用统计字段了,大佬可与i看下最佳答案中的demo

benny111 发表于 2024-6-21 19:09:19

Nathan.guo 发表于 2024-6-21 19:03
大佬,了解到咱们有group by的需求之后,就推荐大佬使用统计字段了,大佬可与i看下最佳答案中的demo

没有答案。需要sql里处理循环。游标等。告诉我实图怎么做

Nathan.guo 发表于 5 天前

benny111 发表于 2024-6-21 19:09
没有答案。需要sql里处理循环。游标等。告诉我实图怎么做

大佬,没必要再纠结视图了;其次我说的就是这个回复中的demo
页: [1]
查看完整版本: 分类汇总请给个解决方案