首页 文章

无法将外部SQL查询的数据项列提取到congons中的数据源中

提问于
浏览
1

我是Cognos的新手 . 我想在'Cognos-bi'中为外部SQL查询创建一个报告,该报告具有多个具有多个值的参数 . 对于“each”参数,我需要使用值提示,它应该显示每个参数值,如下拉列表 .

当我以前创建值提示时,它将仅在数据源中创建预先存在的包项,而不在数据项列中创建 .

有没有办法将这些数据项列提取到数据源包项目中?

1 回答

  • 0

    为每个提示创建单独的查询 . 使每个查询成为与外部sql查询相同的目标数据库的自定义sql . 您实际上无法对提示和主报表数据使用相同的自定义sql查询,因为理想情况下,您希望通过提示选择过滤主报表数据 .

    例如,我想查询主查询的工资:

    Select e.last_name, e.first_name, s.salary
    from salary_table s
    join employee_table e on s.employee_id = s.employee_id
    

    如果我想提示报表用户选择一个员工,我会创建另一个查询外部sql(自定义sql):

    select e.last_name||', '||e.first_name "Employee Name", e.employee_id
    from employee_table e
    where termination_date is null
    

    我将该查询命名为pEmployees . 我在提示页面上创建一个值提示,并将其源查询设置为pEmployees . employee_id是“使用 Value ”,“员工名称”是“显示 Value ” . 我会按员工姓名对其进行排序 . 设置参数,提示链接为“pEmployeeSelected”或您想要的任何变量名称 .

    在主报表查询中,添加一行以根据所选的提示对其进行过滤 .

    Select e.last_name, e.first_name, s.salary
    from salary_table s
    join employee_table e on s.employee_id = s.employee_id
    where e.employee_id = #prompt('pEmployeeSelected')#
    

    现在主报表查询项中不需要过滤器,因为您在sql中进行过滤 . 如果您改为在查询项中进行过滤,Cognos会在每次运行报表时提取所有员工,然后找到一名员工并对其进行报告 . 非常低效 .

    如果您按提示过滤sql,则不能使用相同的查询来生成值提示下拉列表 . 这就是为什么我们使用两个单独的查询项,一个用于获取员工列表,一个用于实际查询工资(以及员工详细信息) .

相关问题