oracle 静态 动态,动态与静态SQL的效率问题

[php]

SELECT SEG_AMOUNT.SEGMENT1,

SEG_AMOUNT.DESCRIPTION,

FFV.DESCRIPTION FLEX_DESCRIPTION,

(FFV.DESCRIPTION || FFVV.DESCRIPTION) FLEX_VALUE_MEANING,

SEG_AMOUNT.ASSORT,

SEG_AMOUNT.COST,

SEG_AMOUNT.ACTUAL_COST,

(SEG_AMOUNT.COST - SEG_AMOUNT.ACTUAL_COST) COST_DIFF,

DECODE(SEG_AMOUNT.COST,

0,

0,

ROUND((SEG_AMOUNT.COST - SEG_AMOUNT.ACTUAL_COST) /

SEG_AMOUNT.COST * 100,

2)) COST_PER,

SEG_AMOUNT.SALE_NUMBER,

SEG_AMOUNT.QUANTITY,

(SEG_AMOUNT.SALE_NUMBER - SEG_AMOUNT.QUANTITY) QTY_DIFF,

DECODE(SEG_AMOUNT.SALE_NUMBER,

0,

0,

ROUND((SEG_AMOUNT.SALE_NUMBER - SEG_AMOUNT.QUANTITY) /

SEG_AMOUNT.SALE_NUMBER * 100,

2)) QTY_PER,

SEG_AMOUNT.SALE_COST,

SEG_AMOUNT.ACTUAL_MONEY,

(SEG_AMOUNT.SALE_COST - SEG_AMOUNT.ACTUAL_MONEY) MONEY_DIFF,

DECODE(SEG_AMOUNT.SALE_COST,

0,

0,

ROUND((SEG_AMOUNT.SALE_COST - SEG_AMOUNT.ACTUAL_MONEY) /

SEG_AMOUNT.SALE_COST * 100,

2)) MONEY_PER,

SEG_AMOUNT.UNIT_PRICE,

SEG_AMOUNT.SELLING_PRICE,

(SEG_AMOUNT.UNIT_PRICE - SEG_AMOUNT.SELLING_PRICE) UNIT_PRICE_DIFF,

DECODE(SEG_AMOUNT.UNIT_PRICE,

0,

0,

ROUND((SEG_AMOUNT.UNIT_PRICE - SEG_AMOUNT.SELLING_PRICE) /

SEG_AMOUNT.UNIT_PRICE * 100,

2)) UNIT_PRICE_PER,

SEG_AMOUNT.SALE_AMOUNT,

SEG_AMOUNT.SELLING_AMOUNT,

(SEG_AMOUNT.SALE_AMOUNT - SEG_AMOUNT.SELLING_AMOUNT) SALE_AMOUNT_DIFF,

DECODE(SEG_AMOUNT.SALE_AMOUNT,

0,

0,

ROUND((SEG_AMOUNT.SALE_AMOUNT - SEG_AMOUNT.SELLING_AMOUNT) /

SEG_AMOUNT.SALE_AMOUNT * 100,

2)) SALE_AMOUNT_PER

FROM (SELECT B.SEGMENT1,

B.DESCRIPTION,

FLV.ATTRIBUTE1 ASSORT,

TO_CHAR(TRUNC(MMT.TRANSACTION_DATE), ''MM-YYYY'') PERIOD_NAME,

SUM(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY) /

MUCC.CONVERSION_RATE,

ABS(MMT.PRIMARY_QUANTITY) /

MUCC.CONVERSION_RATE)) QUANTITY,

ROUND(SUM(DECODE(OOL.SHIP_FROM_ORG_ID,

81,

(SELECT DISTINCT RCTL.UNIT_SELLING_PRICE

FROM RA_CUSTOMER_TRX_LINES_ALL RCTL

WHERE RCTL.SALES_ORDER =

TO_CHAR(OOH.ORDER_NUMBER)

AND RCTL.INVENTORY_ITEM_ID =

B.INVENTORY_ITEM_ID

AND RCTL.SALES_ORDER_LINE =

OOL.LINE_NUMBER

AND RCTL.INTERFACE_LINE_ATTRIBUTE6 = TO_CHAR(OOL.LINE_ID)

AND RCTL.ORG_ID = 81

AND RCTL.INTERFACE_LINE_CONTEXT =

''INTERCOMPANY''

AND RCTL.LINE_TYPE = ''LINE''),

MMT.ACTUAL_COST) *

(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY),

ABS(MMT.PRIMARY_QUANTITY)))),

2) ACTUAL_MONEY,

ROUND(DECODE(SUM(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY),

ABS(MMT.PRIMARY_QUANTITY))),

0,

0,

SUM(DECODE(OOL.SHIP_FROM_ORG_ID,

81,

(SELECT DISTINCT RCTL.UNIT_SELLING_PRICE

FROM RA_CUSTOMER_TRX_LINES_ALL RCTL

WHERE RCTL.SALES_ORDER =

TO_CHAR(OOH.ORDER_NUMBER)

AND RCTL.INVENTORY_ITEM_ID =

B.INVENTORY_ITEM_ID

AND RCTL.SALES_ORDER_LINE =

OOL.LINE_NUMBER

AND RCTL.INTERFACE_LINE_ATTRIBUTE6 = TO_CHAR(OOL.LINE_ID)

AND RCTL.ORG_ID = 81

AND RCTL.INTERFACE_LINE_CONTEXT =

''INTERCOMPANY''

AND RCTL.LINE_TYPE = ''LINE''),

MMT.ACTUAL_COST) *

(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY),

ABS(MMT.PRIMARY_QUANTITY)))) /

SUM(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY) /

MUCC.CONVERSION_RATE,

ABS(MMT.PRIMARY_QUANTITY) /

MUCC.CONVERSION_RATE))),

2) ACTUAL_COST,

SUM(OOL.UNIT_SELLING_PRICE *

(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY),

ABS(MMT.PRIMARY_QUANTITY)))) SELLING_AMOUNT,

ROUND(DECODE(SUM(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY),

ABS(MMT.PRIMARY_QUANTITY))),

0,

0,

SUM(OOL.UNIT_SELLING_PRICE *

(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY),

ABS(MMT.PRIMARY_QUANTITY)))) /

SUM(DECODE(OTTA.ORDER_CATEGORY_CODE,

''RETURN'',

-ABS(MMT.PRIMARY_QUANTITY) /

MUCC.CONVERSION_RATE,

ABS(MMT.PRIMARY_QUANTITY) /

MUCC.CONVERSION_RATE))),

2) SELLING_PRICE,

0 SALE_NUMBER,

0 COST,

0 SALE_COST,

0 SALE_AMOUNT,

0 UNIT_PRICE

FROM MTL_MATERIAL_TRANSACTIONS MMT,

OE_ORDER_LINES_ALL        OOL,

MTL_SYSTEM_ITEMS_B        B,

OE_ORDER_HEADERS_ALL      OOH,

HZ_CUST_ACCOUNTS          HCA,

MTL_UOM_CLASS_CONVERSIONS MUCC,

FND_LOOKUP_VALUES         FLV,

OE_TRANSACTION_TYPES_ALL  OTTA

WHERE (B.SEGMENT1 >= ''' || :P_SEGMENT1_FROM || ''' OR ''' || :P_SEGMENT1_FROM || ''' IS NULL)

AND (B.SEGMENT1 <= ''' ||  :P_SEGMENT1_TO || ''' OR ''' || :P_SEGMENT1_TO || ''' IS NULL)

AND (SUBSTR(B.SEGMENT1, 1, ' || TO_CHAR(:P_CATE_NUM) || ') = ''' || :P_CATE || ''' OR ''' || :P_CATE || ''' IS NULL)

AND B.ORGANIZATION_ID = 83

AND OOL.INVENTORY_ITEM_ID = B.INVENTORY_ITEM_ID

AND OOL.INVENTORY_ITEM_ID > 0

AND OOL.ORG_ID = ' || TO_CHAR(:P_ORG_ID) ||

' AND OOL.SCHEDULE_SHIP_DATE >= TO_DATE(''01-'' || ''' || :P_DATE_FROM || ''' || ''00:00:00'', ''DD-MM-YYYY HH24:MI:SS'')

AND OOL.SCHEDULE_SHIP_DATE <= SYSDATE

AND MMT.INVENTORY_ITEM_ID = B.INVENTORY_ITEM_ID

AND MMT.ORGANIZATION_ID = OOL.SHIP_FROM_ORG_ID

AND MMT.INVENTORY_ITEM_ID > 0

AND MMT.ORGANIZATION_ID > 0

AND MMT.TRANSACTION_DATE >= TO_DATE(''01-'' || ''' || :P_DATE_FROM || ''' || ''00:00:00'', ''DD-MM-YYYY HH24:MI:SS'')

AND MMT.TRANSACTION_DATE <= TO_DATE(''' || TO_CHAR(:P_LAST_DATE , 'DD-MM-YYYY HH24:MI:SS') ||''', ''DD-MM-YYYY HH24:MI:SS'')

AND MMT.TRX_SOURCE_LINE_ID = OOL.LINE_ID

AND MMT.TRX_SOURCE_LINE_ID > 0

AND MMT.TRANSFER_SUBINVENTORY IS NULL

AND OOH.HEADER_ID = OOL.HEADER_ID

AND OOH.HEADER_ID > 0

AND OOH.ORG_ID = OOL.ORG_ID

AND OTTA.TRANSACTION_TYPE_ID = OOH.ORDER_TYPE_ID

AND OTTA.ORG_ID = OOL.ORG_ID

AND FLV.LANGUAGE = USERENV(''LANG'')

AND (NVL('''', FLV.TERRITORY_CODE) = FLV.TERRITORY_CODE OR

FLV.TERRITORY_CODE IS NULL)

AND (FLV.LOOKUP_TYPE = ''CUSTOMER CLASS'')

AND (FLV.VIEW_APPLICATION_ID = 222)

AND (FLV.SECURITY_GROUP_ID = 0)

AND HCA.CUST_ACCOUNT_ID = OOH.SOLD_TO_ORG_ID

AND HCA.CUSTOMER_CLASS_CODE = FLV.LOOKUP_CODE

AND MUCC.INVENTORY_ITEM_ID = B.INVENTORY_ITEM_ID

AND MUCC.TO_UOM_CODE = ''Ïä''

AND OOL.ORDER_QUANTITY_UOM = MUCC.FROM_UOM_CODE

GROUP BY B.SEGMENT1,

B.DESCRIPTION,

FLV.ATTRIBUTE1,

TO_CHAR(TRUNC(MMT.TRANSACTION_DATE), ''MM-YYYY'')

UNION ALL

SELECT B.SEGMENT1,

B.DESCRIPTION,

TRIM(CBDA.ASSORT) ASSORT,

TRIM(CBDA.PERIOD_NAME) PERIOD_NAME,

0 QUANTITY,

0 ACTUAL_MONEY,

0 ACTUAL_COST,

0 SELLING_AMOUNT,

0 SELLING_PRICE,

CBDA.SALE_NUMBER,

CBDA.COST,

CBDA.SALE_COST,

CBDA.SALE_AMOUNT,

CBDA.UNIT_PRICE

FROM MTL_SYSTEM_ITEMS_B B,

(SELECT *

FROM CUX.CUX_BUDGET_DATA_ALL

WHERE BUDGET_NUMBER = 102

AND ORG_ID =' || TO_CHAR(:P_ORG_ID) ||

' AND PERIOD_NAME >= ''' || :P_DATE_FROM ||

''' AND PERIOD_NAME <= ''' || :P_DATE_TO || ''') CBDA

WHERE (B.SEGMENT1 >= ''' || :P_SEGMENT1_FROM || ''' OR ''' || :P_SEGMENT1_FROM || ''' IS NULL)

AND (B.SEGMENT1 <= ''' || :P_SEGMENT1_TO || ''' OR ''' || :P_SEGMENT1_TO || ''' IS NULL)

AND (SUBSTR(B.SEGMENT1, 1, ' || TO_CHAR(:P_CATE_NUM) || ') = '''|| :P_CATE || ''' OR ''' || :P_CATE || ''' IS NULL)

AND B.SEGMENT1 = CBDA.ITEM_NUMBER

AND B.ORGANIZATION_ID = 83) SEG_AMOUNT,

(SELECT FV.PARENT_FLEX_VALUE_LOW,

SUBSTR(FT.DESCRIPTION,

INSTR(FT.DESCRIPTION, ''.'', 1, 1) + 1,

LENGTH(FT.DESCRIPTION) -

INSTR(FT.DESCRIPTION, ''.'', 1, 1)) DESCRIPTION

FROM FND_FLEX_VALUES_VL FV, FND_FLEX_VALUES_TL FT

WHERE FV.PARENT_FLEX_VALUE_LOW LIKE ''5%''

AND FV.FLEX_VALUE_MEANING = ''0''

AND FT.FLEX_VALUE_MEANING = FV.PARENT_FLEX_VALUE_LOW

AND FT.LANGUAGE = USERENV(''LANG'')) FFV,

(SELECT F.FLEX_VALUE_MEANING, F.DESCRIPTION

FROM FND_FLEX_VALUES_VL F

WHERE F.FLEX_VALUE_SET_ID = 1006791) FFVV

WHERE FFV.PARENT_FLEX_VALUE_LOW = SUBSTR(SEG_AMOUNT.SEGMENT1, 1, 3)

AND FFVV.FLEX_VALUE_MEANING =

SUBSTR(SEG_AMOUNT.SEGMENT1, LENGTH(SEG_AMOUNT.SEGMENT1) - 4, 1)

GROUP BY SEG_AMOUNT.SEGMENT1,

SEG_AMOUNT.DESCRIPTION,

FFV.DESCRIPTION,

(FFV.DESCRIPTION || FFVV.DESCRIPTION),

SEG_AMOUNT.ASSORT,

SEG_AMOUNT.COST,

SEG_AMOUNT.ACTUAL_COST,

SEG_AMOUNT.SALE_NUMBER,

SEG_AMOUNT.QUANTITY,

SEG_AMOUNT.SALE_COST,

SEG_AMOUNT.ACTUAL_MONEY,

SEG_AMOUNT.UNIT_PRICE,

SEG_AMOUNT.SELLING_PRICE,

SEG_AMOUNT.SALE_AMOUNT,

SEG_AMOUNT.SELLING_AMOUNT

[/php]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值