author:skate
time:2010/11/08
在用cognos8的report studio通过sql制作报表的时候,如果想在where后面的条件,在运行报表前需要作为参数提示输入,以达到交互,可以用函数prompt
语法:prompt提示输入函数。
prompt ( prompt_name , datatype , defaultText , text , queryItem , trailing_text )
提示用户输入单个值。只需 prompt_name 自变量。未指定时,数据类型默认为字符串。指定默认文本时,提示是可选的。指定文本后,
文本会在值前面。可以指定 queryItem 以利用查询项目的“Prompt Info”属性。指定 trailing_text 后,trailing_text 会附加到值的后面。
例子:
SELECT username "用户名",lottery_name "彩种",money "投注额" ,money_sort "排名" FROM (
select a.username, a.lottery_name,money,row_number() over(PARTITION BY a.lottery_name ORDER BY a.money DESC) AS money_sort
FROM (
SELECT t.username, l.lottery_name,SUM(t.money) money from A t , B l
WHERE t.state=4
AND l.id=t.lottery_id
AND t.buy_time>to_date(#prompt('begintime(例如:2010-11-01)')#, 'yyyy-mm-dd hh24:mi:ss')
AND t.buy_time<to_date(#prompt('endtime(例如:2010-11-05)')#, 'yyyy-mm-dd hh24:mi:ss')
AND t.lottery_id IN (67,74)
GROUP BY l.lottery_name,t.username
) a
)
WHERE money_sort < 4
这样在运行报表的时候会提示输入两个时间变量,类似如下图所示:
运行报表后的结果如下:
用户名 | 彩种 | 投注额 | 排名 |
用户名1 | 彩种1 | 3,236 | 1 |
用户名2 | 彩种1 | 2,236 | 2 |
用户名3 | 彩种1 | 1,964 | 3 |
用户名4 | 彩种2 | 14,976 | 1 |
用户名5 | 彩种2 | 9,524 | 2 |
用户名6 | 彩种2 | 1,012 | 3 |
-----end----