我一直在尝试将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