找回密码
 立即注册

QQ登录

只需一步,快速开始

葡萄叶

注册会员

10

主题

25

帖子

105

积分

注册会员

积分
105
葡萄叶
注册会员   /  发表于:2023-10-31 16:16  /   查看:2276  /  回复:3
10金币
select  a.rk,a.开始日期,a.结束日期,a.生产订单号,a.生产订单批号,a.批号,a.业务类型,a.凭证摘要,a.部门编码,a.部门名称,a.存货编码,a.存货名称,a.规格,a.收入数量,a.收入单价,a.收入金额,a.发出数量,a.发出单价,a.发出金额,b.直接人工,b.电费,b.制造费用,b.公共人工
from (select row_number() over(partition by 生产订单号 order by 生产订单号) rk,* from wyn_dingdan_view)  a  left join  wyn_feiyong1_view b on a.生产订单号=b.生产订单号 and a.rk=1
where  
a.开始日期  between  @起始日期  and  @终止日期   
{IIF(a.@生产订单号 = "", "", "and a.生产订单号 = '" + @生产订单号 + "' ")}      
order by a.生产订单号,a.rk

如果不加 {IIF(a.@生产订单号 = "", "", "and a.生产订单号 = '" + @生产订单号 + "' ")}  可以按日期区间查询出数据,加上生产订单号后,参数属性是可不输入,如果不输入这个条件,输入日期查询,查询出的就是空白了。输入生产订单号,只能查一个订单。我希望是输入订单号,可以单独查询该订单,只输入日期区间,查询的是区间内所有的订单。

11.png
22.png
33.png

最佳答案

查看完整内容

问题描述:内嵌sql如何根据参数过滤对应的数据,当参数设置为"可不输入"时查所有,否则根据参数进行过滤 问题解答: 这个其实就是动态sql的语法,您的sql有问题,iif表达式中的a.@参数名称,这个其实写法就不对,@参数名称这个最后翻译就是对应的参数值,a是表的别名,所以这个写法肯定有问题,其次"{}"这个符合中写的话写的就是对应的报表参数名称而不是内嵌数据集下的查询参数的参数名称, 内嵌sql表达式: 动态sql参 ...

3 个回复

正序浏览
Bella.YuanWyn认证
超级版主   /  发表于:2023-11-1 10:00:17
4#

那您先按照我上面的回复修改一下sql测试看看哦,有问题您及时追贴,我们在一起看看。
回复 使用道具 举报
葡萄叶
注册会员   /  发表于:2023-11-1 09:18:08
3#
Bella.Yuan 发表于 2023-10-31 17:14
问题描述:内嵌sql如何根据参数过滤对应的数据,当参数设置为"可不输入"时查所有,否则根据参数进行过滤

...

好的,明白
回复 使用道具 举报
最佳答案
最佳答案
Bella.YuanWyn认证
超级版主   /  发表于:2023-10-31 16:16:18
来自 2#
问题描述:内嵌sql如何根据参数过滤对应的数据,当参数设置为"可不输入"时查所有,否则根据参数进行过滤


问题解答:
这个其实就是动态sql的语法,您的sql有问题,iif表达式中的a.@参数名称,这个其实写法就不对,@参数名称这个最后翻译就是对应的参数值,a是表的别名,所以这个写法肯定有问题,其次"{}"这个符合中写的话写的就是对应的报表参数名称而不是内嵌数据集下的查询参数的参数名称,
image.png188132323.png
内嵌sql表达式:
  1. select * from 销售明细 where 订购日期 between @startDate and @endDate {IIF(@大区 = "", "", "and 销售大区='" & @大区 & "'")}
复制代码

动态sql参考链接:https://gcdn.grapecity.com.cn/showtopic-73537-1-11.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部