Foxtable(狐表)用户栏目专家坐堂 → [求助]筛选条件二选一


  共有2233人关注过本帖树形打印复制链接

主题:[求助]筛选条件二选一

帅哥哟,离线,有人找我吗?
lgj716330
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]筛选条件二选一  发帖心情 Post By:2019/12/28 13:34:00 [只看该作者]

Dim b6 As New SQLGroupTableBuilder("统计表","表A")
b6.Groups.AddDef("类型") 
b6.Groups.AddDef("名称") 
b6.Groups.AddDef("季度") 
b6.Groups.AddDef("性质") 
b6.Totals.AddDef("金额") 
b6.Filter = "" 

b6.Build 

相同的"类型|名称|季度"对应的“性质”有“预估”和“实际”
想实现,如果存在“实际”,就取实际的数据,如果没有“实际”,就取“预估”的数据,如图,上面标色的筛选条件要怎么写

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2019/12/28 13:34:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/28 14:06:00 [只看该作者]

这种无法使用分组统计处理,使用sql:

select
类型,名称,季度,iif(实际=-1,'预估','实际') as 性质, iif(实际=-1,预估,实际) as 金额 from (select 类型,名称,季度,Sum(iif(性质 = '实际',金额,-1)) As 实际,Sum(iif(性质 = '预估',金额,-1)) As 预估 from 表A Group by 类型,名称,季度) as  a

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/12/28 16:08:00 [只看该作者]

Se/ect 类型,名称,年份,季度,iif(实际=-1,'预估','实际') as 性质, iif(实际=-1,预估,实际) as 金额 from (se/ect 类型,名称,年份,季度,Sum(iif(性质 = '实际',金额,-1)) As 实际,Sum(iif(性质 = '预估',金额,-1)) As 预估 from {表A} Group by 类型,名称,年份,季度) as A

无法完成延迟准备。
无法预定义语句。
'=' 附近有语法错误。
'=' 附近有语法错误。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/28 16:53:00 [只看该作者]

如果是SqlServer数据库,把iif改为case when:http://www.foxtable.com/webhelp/topics/1827.htm

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/12/28 17:36:00 [只看该作者]

Se/ect 类型,名称,年份,季度,(case when 实际=-1 then '预估' else '实际' end) as 性质, (case when 实际=-1 then 预估 else 实际 end) as 金额 from (se/ect 类型,名称,年份,季度,Sum(case when 性质 = '实际' then 金额 else -1 end) As 实际,Sum(case when 性质 = '预估' then 金额 else -1 end) As 预估 from 表A Group by 类型,名称,年份,季度) as A

取实际数据的时候,金额会被减掉“预估”的记录数,比如金额是200,“预估”记录有7条,取过来的结果是193,哪里还需要调整

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2019/12/28 19:00:00 [只看该作者]

嗯,-1改成0,好象可以了

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2020/1/16 10:29:00 [只看该作者]

Dim sql As String = "Se/ect 编号,部门,类型,名称,年份,季度,(case when 实际=0 then '预估' else '实际' end) as 性质, (case when 实际=0 then 预估 else 实际 end) as 成本金额 from (se/ect 编号,部门,类型,名称,年份,季度,Sum(case when 性质 = '实际' then 成本金额 else 0 end) As 实际,Sum(case when 性质 = '预估' then 成本金额 else 0 end) As 预估,Sum(case when 性质 = '实际' then 目标成本 else 0 end) As 实际,Sum(case when 性质 = '预估' then 目标成本 else 0 end) As 预估 from 汇总三 Group by 编号,部门,类型,名称,年份,季度) as A" 


以上只有成本金额时没问题,加了目标成本即标颜色部分后,就生成不了,要怎么改下,SQL不太懂


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/16 10:52:00 [只看该作者]

Dim sql As String = "Se/ect 编号,部门,类型,名称,年份,季度,(case when 实际=0 then '预估' else '实际' end) as 性质, (case when 实际=0 then 预估 else 实际 end) as 成本金额 from (se/ect 编号,部门,类型,名称,年份,季度,Sum(case when 性质 = '实际' then 成本金额 else 0 end) As 实际,Sum(case when 性质 = '预估' then 成本金额 else 0 end) As 预估,Sum(case when 性质 = '实际' then 目标成本 else 0 end) As 目标实际,Sum(case when 性质 = '预估' then 目标成本 else 0 end) As 目标预估 from 汇总三 Group by 编号,部门,类型,名称,年份,季度) as A" 

不能有重复的列名

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1301 积分:10050 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2020/1/16 11:38:00 [只看该作者]

上面的也没生成,改成下面,也是没用
Dim sql As String = "Se/ect 编号,部门,类型,名称,年份,季度,(case when 实际=0 then '预估' else '实际' end) as 性质,(case when 实际=0 then 预估 else 实际 end) as 成本金额 from (se/ect 编号,部门,类型,名称,年份,季度,Sum(case when 性质 = '实际' then 成本金额 else 0 end) As 实际,Sum(case when 性质 = '预估' then 成本金额 else 0 end) As 预估 from 汇总三 Group by 编号,部门,类型,名称,年份,季度) as A,(case when 实际=0 then 预估 else 实际 end) as 目标成本 from (se/ect 编号,部门,类型,名称,年份,季度,Sum(case when 性质 = '实际' then 目标成本 else 0 end) As 目标实际,Sum(case when 性质 = '预估' then 目标成本 else 0 end) As 目标预估 from 汇总三 Group by 编号,部门,类型,名称,年份,季度) as B"



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/16 11:58:00 [只看该作者]

导出这个表数据发上来测试

 回到顶部
总数 15 1 2 下一页