I have a working script and would like to add the column 'Product_Hier_2_l2_Name' from a table called b_product. When I add the Column Oracles throws back the error:
ORA-00904: "P"."PRODUCT_HIER_2_L2_NAME": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 150 Column: 5
I have tried different scripts changing the group by adding table reference 'P.Product_Hier_2_L2_Name
SELECT
BU_CODE
, CUST_TYPE
, TXN_MTH
, PRODUCT_HIER_2_L2_NAME
, MONTHS_BETWEEN
, TOT_MEMS
, SUM(TOT_MEMS) OVER (PARTITION BY BU_CODE, TXN_MTH) AS TOT_IN_MTH
FROM (
SELECT
BU_CODE
, CUST_TYPE
, TXN_MTH
, P.PRODUCT_HIER_2_L2_NAME
, MONTHS_BETWEEN
, COUNT(DISTINCT CONTACT_KEY) AS TOT_MEMS
FROM (
SELECT
T.CONTACT_KEY
, T.BU_CODE
, TXN_MTH
, P.PRODUCT_HIER_2_L2_NAME
, CASE WHEN A.TXN_MTH = MIN(X.FISCAL_MTH_IDNT) THEN 'NEW'
ELSE 'RETURNING' END AS CUST_TYPE
, MIN(CASE WHEN X.FISCAL_MTH_IDNT > A.TXN_MTH THEN X.FISCAL_MTH_IDNT ELSE NULL END) AS NEXT_TXN_MTH
, MONTHS_BETWEEN(
TO_DATE(MIN(CASE WHEN X.FISCAL_MTH_IDNT > A.TXN_MTH THEN X.FISCAL_MTH_IDNT ELSE NULL END),'YYYYMM'),
TO_DATE(TXN_MTH,'YYYYMM')) AS MONTHS_BETWEEN
FROM B_TRANSACTION T
INNER JOIN B_TIME X
ON T.TRANSACTION_DT_KEY = X.DATE_KEY
INNER JOIN B_PRODUCT P
ON T.PRODUCT_KEY = P.PRODUCT_KEY
INNER JOIN (
SELECT DISTINCT
T.CONTACT_KEY
, T.BU_KEY
, X.FISCAL_MTH_IDNT AS TXN_MTH
, P.PRODUCT_HIER_2_L2_NAME
FROM B_TRANSACTION T
INNER JOIN B_PRODUCT P
ON T.PRODUCT_KEY = P.PRODUCT_KEY
INNER JOIN B_TIME X
ON T.TRANSACTION_DT_KEY = X.DATE_KEY
WHERE 1=1
AND FISCAL_MTH_IDNT BETWEEN 202101 AND 202112
AND MEMBER_SALE_FLAG = 'Y'
AND CONTACT_KEY > 0
AND TRANSACTION_TYPE_NAME = 'Item'
AND T.BU_KEY IN (5)
) A
ON A.CONTACT_KEY = T.CONTACT_KEY AND A.BU_KEY = T.BU_KEY
GROUP BY
T.CONTACT_KEY
, T.BU_CODE
, TXN_MTH
, P.PRODUCT_HIER_2_L2_NAME
)
GROUP BY
BU_CODE
, CUST_TYPE
, TXN_MTH
, PRODUCT_HIER_2_L2_NAME
, MONTHS_BETWEEN
ORDER BY 1,2,3,4
)
GROUP BY
BU_CODE
, CUST_TYPE
, TXN_MTH
, MONTHS_BETWEEN
, TOT_MEMS
;