Access 2007中的Coalesce和nullif函数

时间:2016-06-17 06:49:28

标签: ms-access teradata

我一直在尝试将TD SQL查询转换为Access 2007版本。但是,在Access中似乎未定义coalesce和nullif函数。我该如何解决这个问题?我一直在使用下面给出的以下查询

SELECT 
BRAND_DESC, 
COUNT(IIF( PROMO_SUB_TYPE <> 'No Promo',SKU_ID))  AS PROMO_COUNT,
COUNT(IIF( PROMO_SUB_TYPE <> 'No Promo' AND ICMT_UNIT_LIFT> 0, SKU_ID))  AS COUNT_POS_LIFT, 
' '  AS BBY_SHARE, 
AVG(IIF( PROMO_SUB_TYPE <> 'No Promo' , COMP_PRICE ) ) AS PROMO_CPI, 
SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , AVG_BSKT_SIZE ) ) AS AVG_BSKT_SIZE, 
SUM(WKLY_NET_UNITS)  AS TOTAL_UNITS, 
SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , WKLY_NET_UNITS ) ) AS PROMO_UNITS, 
SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' ,  INC_UNITS ) ) AS INC_UNITS, 

COALESCE(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , INC_UNITS )/NULLIF(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , ADJ_UNITS_BSLN ),0),0) )) AS ICMT_UNIT_LIFT, 

SUM(WKLY_NET_REV)  AS TOTAL_REV, 
SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , WKLY_NET_REV ) ) AS PROMO_REV, 
SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , INC_REV ) ) AS INC_REV, 

COALESCE(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , INC_REV )/NULLIF(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , ADJ_REV_BSLN ),0),0) )) AS REV_LIFT,

SUM(WKLY_NET_MRGN_VF)  AS TOTAL_MARGIN, 
SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , WKLY_NET_MRGN_VF ) ) AS PROMO_MARGIN, 

COALESCE(SUM(WKLY_NET_MRGN_VF)/NULLIF(SUM(WKLY_NET_REV),0),0)  AS TOTAL_MARGIN_PCT, 
COALESCE(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , WKLY_NET_MRGN_VF )/NULLIF(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , WKLY_NET_REV ),0),0) )) AS PROMO_MARGIN_PCT, 

SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , INC_MRGN_VF ) ) AS INC_MRGN_VF, 

COALESCE(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , INC_MRGN_VF )/NULLIF(SUM(IIF( PROMO_SUB_TYPE <> 'No Promo' , ADJ_MRGN_BSLN_VF ),0),0)  )) AS ICMT_MRGN_LIFT_VF

FROM PRODBBYCIADHOCWRK_TBEN_PR_DSM_EVAL_MTRC_ALL 
 WHERE CLASS_ID = 16 
 AND SCLS_ID IN (408,409)
AND BRAND_DESC LIKE "ABCD"
AND PROMO_SUB_TYPE = 'EFGH'
AND AD_WK BETWEEN 2014012 AND 2015013
GROUP BY BRAND_DESC
ORDER BY BRAND_DESC
;

任何人都可以帮我解决这个问题吗?我还发现Access不允许子查询中的聚合函数。我该如何处理这部分?我应该创建不同的表吗?

谢谢和问候, Nirvik

0 个答案:

没有答案