cognos 生成的SQL太复杂, 如何简化

截取出来的 一部分,COGNOS在什么时候会生成这样的SQL ?

                SELECT
                    "CMRM_PROD_DIM_V"."VND_NUMERIC_DESC" AS "Group1",
                    "CMRM_PROD_DIM_V"."ZL_MSTSTYL_NBR" AS "Group2",
                    "CMRM_PROD_DIM_V"."ZL_CLASS_NBR" AS "Group3",
                    CASE
                        WHEN
                            'a' IN (
                                'b', 'c', 'd', 'e', 'f', 'g' )
                            THEN
                                "CMRM_PROD_DIM_V"."PARENT_DIV_ID"
                        ELSE NULL
                    END AS "PDIV_ID",
                    CASE
                        WHEN
                            'a' IN (
                                'e', 'i', 'l', 'm' )
                            THEN
                                "CMRM_PROD_DIM_V"."PARENT_DIV_DESC"
                        ELSE NULL
                    END AS "PDIV_Desc",
                    CASE
                        WHEN
                            'b' IN (
                                'b', 'c', 'd', 'e', 'f', 'g' )
                            THEN
                                "CMRM_PROD_DIM_V"."DIV_MAN_ID"
                        ELSE NULL
                    END AS "DIV_ID",
                    CASE
                        WHEN
                            'b' IN (
                                'e', 'i', 'l', 'm' )
                            THEN
                                "CMRM_PROD_DIM_V"."DIV_MAN_DESC"
                        ELSE NULL
                    END AS "DIV_Desc",
                    CASE
                        WHEN
                            'c' IN (
                                'b', 'c', 'd', 'e', 'f', 'g' )
                            THEN
                                "CMRM_PROD_DIM_V"."MGM_ID"
                        ELSE NULL
                    END AS "MGM_ID",
                    CASE
                        WHEN
                            'c' IN (
                                'e', 'i', 'l', 'm' )
                            THEN
                                "CMRM_PROD_DIM_V"."MGM_DESC"
                        ELSE NULL
                    END AS "MGM_Desc",
                    CASE
                        WHEN
                            'd' IN (
                                'b', 'c', 'd', 'e', 'f', 'g' )
                            THEN
                                "CMRM_PROD_DIM_V"."BUYER_ID"
                        ELSE NULL
                    END AS "Buyer_ID",
                    CASE
                        WHEN
                            'd' IN (
                                'e', 'i', 'l', 'm' )
                            THEN
                                "CMRM_PROD_DIM_V"."BUYER_DESC"
                        ELSE NULL
                    END AS "Buyer_Desc",
                    CASE
                        WHEN
                            'e' IN (
                                'b', 'c', 'd', 'e', 'f', 'g' )
                            THEN
                                "CMRM_PROD_DIM_V"."DEPT_NBR"
                        ELSE NULL
                    END AS "Dept_ID",
参与2

1同行回答

junix2008junix2008项目经理耐普罗塑胶五金制品(深圳)有限公司
这些case when确定不是报表制作人员手工写的?看起来应该是在query里 对每一个item做特殊处理时手工写的,而不是cognos生成的。先检查report里的公式,如果没有,就去framework里打开项目,看看相应的query里的定义有没有,应该在那里能找到。好久没用cognos,只能靠回忆了。。。。。...显示全部
这些case when确定不是报表制作人员手工写的?看起来应该是在query里 对每一个item做特殊处理时手工写的,而不是cognos生成的。先检查report里的公式,如果没有,就去framework里打开项目,看看相应的query里的定义有没有,应该在那里能找到。

好久没用cognos,只能靠回忆了。。。。。。收起
互联网服务 · 2015-04-29
浏览1210

提问者

richard_macy
数据库管理员macys
擅长领域: 数据库服务器存储

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-04-23
  • 关注会员:1 人
  • 问题浏览:2904
  • 最近回答:2015-04-29
  • X社区推广