如何用SQL在where语句里传optional参数?

用自己写的SQL做报表,SQL里某些条件的值是通过prompt page里的选项传进去的,SQL语句大概类似下面这样:

select Name,employID, City
from emp
where emp.Name=#prompt('Name')# and emp.City=#prompt('City')#
group by Name, City

已经在Prompt page里定义了两个Value Prompt类型的参数,其中Name是必选项,City定义为可选项。但是一旦SQL这么写之后,City就变成了必选项,
有什么办法将City定义成可选的吗?我希望不选City的时候默认返回所有City的值
参与13

11 同行回答

zhinengyouzi zhinengyouzi 商业智能工程师 苏宁易购
小经验,小技巧,很好显示全部
小经验,小技巧,很好 收起
互联网服务 · 2013-12-28
浏览1059
lcyao lcyao 软件开发工程师 VP科技股份有限公司
谢谢分享显示全部
谢谢分享 收起
银行 · 2013-12-22
浏览1121
Morris Morris 软件开发工程师 ABC
我这边就是不能有“=”号,否则格式验证就出错。可能是Cognos版本问题,我的是Cognos 10显示全部
我这边就是不能有“=”号,否则格式验证就出错。
可能是Cognos版本问题,我的是Cognos 10 收起
系统集成 · 2013-11-14
浏览1127
日杰 日杰 软件开发工程师 新软科技有限公司
回复 8# Morris 改成这样试试select * from tf01_lr_mwhere 1=1 #prompt('month', 'String',' ',' and time_key=')##prompt('index_id', 'String',' ',' and index_id=')#我这边是没有问题的,and 1=1换成 “空格”显示全部
回复 8# Morris

改成这样试试
select * from tf01_lr_m
where 1=1 #prompt('month', 'String',' ',' and time_key=')#
#prompt('index_id', 'String',' ',' and index_id=')#
我这边是没有问题的,and 1=1换成 “空格” 收起
互联网服务 · 2013-11-11
浏览1099
Morris Morris 软件开发工程师 ABC
实验成功,改成这样就是默认选择全部的: #prompt('City','String','emp.City')#很疑惑的是,如果用恒等式的格式(如下)会报错说“=”号是异常符号,为什么呢?#prompt('City','String', 'and 1=1', 'and emp.City=')#...显示全部
实验成功,改成这样就是默认选择全部的:
#prompt('City','String','emp.City')#
很疑惑的是,如果用恒等式的格式(如下)会报错说“=”号是异常符号,为什么呢?
#prompt('City','String', 'and 1=1', 'and emp.City=')# 收起
系统集成 · 2013-11-11
浏览1105
Morris Morris 软件开发工程师 ABC
楼上能给个具体的例子吗?我试过改成下面两种情况,结果都不是select all#prompt('City','String','null')#   默认不选,而不是选择全部#prompt('City','String','')#        City变成必选项...显示全部
楼上能给个具体的例子吗?
我试过改成下面两种情况,结果都不是select all
#prompt('City','String','null')#   默认不选,而不是选择全部
#prompt('City','String','')#        City变成必选项 收起
系统集成 · 2013-11-11
浏览1124
日杰 日杰 软件开发工程师 新软科技有限公司
回复 5# Morris     不选(为null),就是代表全部显示全部
回复 5# Morris


    不选(为null),就是代表全部 收起
互联网服务 · 2013-11-08
浏览1147
Morris Morris 软件开发工程师 ABC
用什么参数可以实现默认值是select all呢?显示全部
用什么参数可以实现默认值是select all呢? 收起
系统集成 · 2013-11-08
浏览1092
日杰 日杰 软件开发工程师 新软科技有限公司
多个参数,继续在后面加#prompt('p1', 'token',' and 1=1',' and year_key1=')#显示全部
多个参数,继续在后面加#prompt('p1', 'token',' and 1=1',' and year_key1=')# 收起
互联网服务 · 2013-11-07
浏览1085
日杰 日杰 软件开发工程师 新软科技有限公司
回复 2# Morris 我这里只测试了一个参数,select * from td_date where #prompt('p', 'token','1=1','year_key=')#显示全部
回复 2# Morris

我这里只测试了一个参数,
select * from td_date where #prompt('p', 'token','1=1','year_key=')# 收起
互联网服务 · 2013-11-07
浏览1112

提问者

Morris
软件开发工程师 ABC
评论64

相关问题

相关资料

问题状态

  • 发布时间:2013-11-07
  • 关注会员:2 人
  • 问题浏览:4761
  • 最近回答:2013-12-28
  • X社区推广