Cognos报告(Query explorer中的gererate查询)

时间:2018-04-13 02:49:33

标签: db2 cognos cognos-10 cognos-bi cognos-tm1

我在报告中有数据项Dealer Code,我从D_DEALER表中获取。但是当我执行生成sql时,它会给出以下查询。

"select distinct
  "D_DEALER"."I_CURR" "Dealer_Code"
from
  "DEALER"."D_DEALER" "D_DEALER"          ,
  "SRVCTRCT"."PGM_OPTIONS" "PGM_OPTIONS"  ,
  "SRVCTRCT"."OPTION_INDEX" "OPTION_INDEX",
  "SRVCTRCT"."L_DLR_PROFL" "D_SC_DLR_PROFILE"
where
  "D_DEALER"."L_DLR_CURR_REC" = 'Y'
  and "PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')
  and "D_SC_DLR_PROFILE"."I_DLR_DIM" = "D_DEALER"."I_DLR_DIM"
  and "OPTION_INDEX"."C_OPT_KEY"     = "D_SC_DLR_PROFILE"."C_KEY_OPT"
  and "OPTION_INDEX"."I_SC_OPT_SAN"  = "PGM_OPTIONS"."I_SC_OPT_SAN" FOR FETCH ONLY"

Cognos FM中应用了某些级别的连接。但理想情况下,它应该只从1 table(D_DEALER)获取记录,但为什么其他tables(PGM_OPTIONS,OPTION_INDEX,D_SC_DLR_PROFILE)会进入图片?

请帮助我解决这个疑问。 提前致谢。

2 个答案:

答案 0 :(得分:0)

这实际上是一个Cognos问题,但从Db2的角度来看,如果表之间的连接上有外键,优化器将删除任何冗余连接。

但是,查看您的查询时,需要完成所有连接,以便可以应用"PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')过滤器。即您只询问没有C_PGM_ATTR的经销商' U'。如果删除该要求,您可能会发现Db2和/或Cognos将删除与其他表的连接。

答案 1 :(得分:0)

FM有连接,但是当你从一个查询主题中提取一列时,SQL应该只显示一个你想象的表,但最有可能的是表D_DEALER在FM中嵌入了带有值的过滤器

"D_DEALER"."L_DLR_CURR_REC" = 'Y'
 "PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')

这是我的猜测