服务器数据集中的变量问题

服务器数据集,查询结果

image.png

定义的服务器记录集中,没有使用参数

select A.Y , A.m , A.项目编号 , a.总组重量 , b.全船分段重量 from (

select Y,M,项目编号 , sum(isnull(总组重量,0)) as 总组重量

from (

select A.Y, A.M, a.项目编号 , b.重量吨位 as 总组重量

from (

select *, case when DAY(下水) >=26 then

case when MONTH(下水) =12 then YEAR(下水) + 1 else YEAR(下水) end

  when DAY(下水) <=26 then YEAR(下水) 

  end as Y

, case when DAY(下水) >=26 then

case when MONTH(下水) =12 then 1   else month(下水)+1 end

  when DAY(下水) <=26 then month(下水)

  end as m

from ZBTXyxbProductCycle

where 1=1 and 可用 = 1 

and 下水 is not null

) as a

left join ZBTXzzbOrderDaZai as b on b.项目编号 = a.项目编号 and b.可用 = 1

where b.工序阶段 = '总组'

) as a

group by Y,M,项目编号

) as a

left join (  

    select 项目编码 , sum(isnull(重量,0)) as 全船分段重量 from viewShipBlockInfo

    where 可用 = 1 and 中间产品类型 like '%分段%'

    group by 项目编码 ) as b on b.项目编码= a.项目编号

在报表中使用公式:

 count(gdZBTX总装部总组率重量.select(总组重量,Y=2023&&M=11))

SUM(gdZBTX总装部总组率重量.select(总组重量,Y=2023&&M=11)) 

SUM(gdZBTX总装部总组率重量.select(全船分段重量,Y=2023&&M=11))

预览页面后,结果如下

image.png

而在页面中使用公式:

=if( count(gdZBTX总装部总组率重量.select(总组重量,Y=$Y&&M=$M))=0,0, SUM(gdZBTX总装部总组率重量.select(总组重量,Y=$Y&&M=$M)) * 1000.0/SUM(gdZBTX总装部总组率重量.select(全船分段重量,Y=$Y&&M=$M))) 

$Y,$M由控件Y,M选择年月获得。

count的结果是7,不是2, 最终结果应该是67%, 显示计算缺是7个相加的57%。

服务器数据集哪里写错了吗?

FineReport 用户8j8ZB1862332 发布于 2023-12-5 09:02
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2023-12-5 09:03(编辑于 2023-12-5 09:24)

把后面的条件加上引号,试试

count(gdZBTX总装部总组率重量.select(总组重量,Y='2023'&&M='11'))

select A.Y , A.m , A.项目编号 , a.总组重量 , b.全船分段重量 from (

select Y,M,项目编号 , sum(isnull(总组重量,0)) as 总组重量

from (

select A.Y, A.M, a.项目编号 , b.重量吨位 as 总组重量

from (

select *, case when DAY(下水) >=26 then

case when MONTH(下水) =12 then YEAR(下水) + 1 else YEAR(下水) end

  when DAY(下水) <=26 then YEAR(下水) 

  end as Y

, case when DAY(下水) >=26 then

case when MONTH(下水) =12 then 1   else month(下水)+1 end

  when DAY(下水) <=26 then month(下水)

  end as m

from ZBTXyxbProductCycle

where 1=1 and 可用 = 1 

and 下水 is not null

) as a

left join ZBTXzzbOrderDaZai as b on b.项目编号 = a.项目编号 and b.可用 = 1

where b.工序阶段 = '总组'

) as a

group by Y,M,项目编号

) as a

left join (  

    select 项目编码 , sum(isnull(重量,0)) as 全船分段重量 from viewShipBlockInfo

    where 可用 = 1 and 中间产品类型 like '%分段%'

    group by 项目编码 ) as b on b.项目编码= a.项目编号

where A.Y='${Y}' and A.M='${M}'

  • 用户8j8ZB1862332 用户8j8ZB1862332(提问者) =if( count(gdZBTX总装部总组率重量.select(总组重量,Y=$Y&&M=$M))=0,0, SUM(gdZBTX总装部总组率重量.select(总组重量,Y=$Y&&M=$M)) * 1000.0/SUM(gdZBTX总装部总组率重量.select(全船分段重量,Y=$Y&&M=$M))) , 这是我要的最终公式, 前面分段写的测试各个因式的结果的, 测试的结果是对的,总公式的结果是错误的
    2023-12-05 09:06 
  • 用户8j8ZB1862332 用户8j8ZB1862332(提问者) =if( count(gdZBTX总装部总组率重量.select(总组重量,Y=\'$Y\'&&M=\'$M\'))=0,0, SUM(gdZBTX总装部总组率重量.select(总组重量,Y=\'$Y\'&&M=\'$M\')) * 1000.0/SUM(gdZBTX总装部总组率重量.select(全船分段重量,Y=\'$Y\'&&M=\'$M\'))) , 这种写法,结果为0
    2023-12-05 09:08 
  • 用户k6280494 用户k6280494 回复 用户8j8ZB1862332(提问者) 你把公式拆开,放单元格看下值
    2023-12-05 09:09 
  • 用户8j8ZB1862332 用户8j8ZB1862332(提问者) 回复 用户k6280494 count(gdZBTX总装部总组率重量.select(总组重量,Y=2023&&M=11)) SUM(gdZBTX总装部总组率重量.select(总组重量,Y=2023&&M=11)) SUM(gdZBTX总装部总组率重量.select(全船分段重量,Y=2023&&M=11)) 这3个分开,放到页面单元格里是对的 用控件Y,M , 变成 Y=$Y时,就是错误的,没有条件过滤
    2023-12-05 09:11 
  • 用户k6280494 用户k6280494 回复 用户8j8ZB1862332(提问者) 你控件$Y的值是不是不对应啊
    2023-12-05 09:19 
  • 2关注人数
  • 126浏览人数
  • 最后回答于:2023-12-5 09:24
    请选择关闭问题的原因
    确定 取消
    返回顶部