Merchant Limit
Thu Jun 05 2025 09:21:49 GMT+0000 (Coordinated Universal Time)
Saved by @Shivam3.tyagi
create table team_kingkong.mid_limits_shivam as (
WITH latest_limits AS (
SELECT
merchantid,
identifier,
maxamtpermonth,
ROW_NUMBER() OVER (PARTITION BY merchantid, identifier ORDER BY modifieddate DESC) AS rn
FROM (
SELECT
merchantid,
identifier,
maxamtpermonth,
(DATE_DIFF('millisecond', TIMESTAMP '1970-01-01 5:30:00', CAST(modifieddate AS TIMESTAMP))) AS modifieddate
FROM merchant_velocity.instrument_historic_data_snapshot_v3
WHERE dl_last_updated >= DATE '2010-01-01'
UNION ALL
SELECT
merchantid,
identifier,
maxamtpermonth,
modifieddate
FROM TP_S_2022_MD_EVENTLOG_001.TP_S_2022_MD_EVENTLOG_001_snapshot_v3
WHERE dl_last_updated >= DATE '2010-01-01'
)
),
pivoted_limits AS (
SELECT
merchantid,
MAX(CASE WHEN identifier = 'UPI_CC' THEN maxamtpermonth END) AS UPI_CC_limit,
MAX(CASE WHEN identifier = 'UPI' THEN maxamtpermonth END) AS UPI_limit,
MAX(CASE WHEN identifier = 'CC' THEN maxamtpermonth END) AS CC_limit,
MAX(CASE WHEN identifier = 'DC' THEN maxamtpermonth END) AS DC_limit,
MAX(CASE WHEN identifier = 'UPI_CREDITLINE' THEN maxamtpermonth END) AS UPI_CREDITLINE_limit,
MAX(CASE WHEN identifier = 'PER_MID' THEN maxamtpermonth END) AS overall_limit
FROM latest_limits
WHERE rn = 1
GROUP BY merchantid
),
merchant_types AS (
SELECT
v1.merchantid,
CASE
WHEN o_mid IS NOT NULL THEN 'Online'
WHEN e_mid IS NOT NULL THEN 'EDC'
ELSE 'QR'
END AS EDC_QR
FROM pivoted_limits v1
LEFT JOIN (
SELECT DISTINCT merchant_id AS o_mid
FROM datalake.online_payment_merchants
) m_3 ON v1.merchantid = m_3.o_mid
LEFT JOIN (
SELECT DISTINCT mid AS e_mid
FROM paytmpgdb.entity_edc_info_snapshot_v3
WHERE terminal_status = 'ACTIVE'
AND dl_last_updated >= DATE '2010-01-01'
) m_4 ON v1.merchantid = m_4.e_mid
)
select * from (
SELECT
p.merchantid,
m.EDC_QR,
CAST(p.UPI_CC_limit AS double)/100 AS UPI_CC_limit,
CAST(p.UPI_limit AS double)/100 AS UPI_limit,
CAST(p.CC_limit AS double)/100 AS CC_limit,
CAST(p.DC_limit AS double)/100 AS DC_limit,
CAST(p.UPI_CREDITLINE_limit AS double)/100 AS UPI_CREDITLINE_limit,
CAST(p.overall_limit AS double)/100 AS overall_limit
-- CASE
-- WHEN (p.overall_limit IS NULL OR p.overall_limit = -1)
-- THEN '1' ELSE '0'
-- END AS unlimited_overall_limit_flag,
-- CASE
-- WHEN (p.overall_limit IS NULL OR p.overall_limit = -1) OR (p.UPI_CC_limit IS NULL OR p.UPI_CC_limit = -1) THEN 'NA'
-- WHEN p.UPI_CC_limit > p.overall_limit THEN '1'
-- ELSE '0'
-- END AS UPI_CC_limit_ov_lmt_flag,
-- CASE
-- WHEN (p.overall_limit IS NULL OR p.overall_limit = -1) OR (p.UPI_limit IS NULL OR p.UPI_limit = -1) THEN 'NA'
-- WHEN p.UPI_limit > p.overall_limit THEN '1'
-- ELSE '0'
-- END AS UPI_limit_ov_lmt_flag,
-- CASE
-- WHEN (p.overall_limit IS NULL OR p.overall_limit = -1) OR (p.CC_limit IS NULL OR p.CC_limit = -1) THEN 'NA'
-- WHEN p.CC_limit > p.overall_limit THEN '1'
-- ELSE '0'
-- END AS CC_limit_ov_lmt_flag,
-- CASE
-- WHEN (p.overall_limit IS NULL OR p.overall_limit = -1) OR (p.DC_limit IS NULL OR p.DC_limit = -1) THEN 'NA'
-- WHEN p.DC_limit > p.overall_limit THEN '1'
-- ELSE '0'
-- END AS DC_limit_ov_lmt_flag,
-- CASE
-- WHEN (p.overall_limit IS NULL OR p.overall_limit = -1) OR (p.UPI_CREDITLINE_limit IS NULL OR p.UPI_CREDITLINE_limit = -1) THEN 'NA'
-- WHEN p.UPI_CREDITLINE_limit > p.overall_limit THEN '1'
-- ELSE '0'
-- END AS UPI_CREDITLINE_limit_ov_lmt_flag,
-- CASE
-- WHEN (p.UPI_limit IS NULL OR p.UPI_limit = -1) OR (p.UPI_CC_limit IS NULL OR p.UPI_CC_limit = -1) THEN 'NA'
-- WHEN p.UPI_CC_limit > p.UPI_limit THEN '1'
-- ELSE '0'
-- END AS UPI_CC_limit_UPI_limit_flag,
-- CASE
-- WHEN (p.UPI_limit IS NULL OR p.UPI_limit = -1) OR (p.UPI_CREDITLINE_limit IS NULL OR p.UPI_CREDITLINE_limit = -1) THEN 'NA'
-- WHEN p.UPI_CREDITLINE_limit > p.UPI_limit THEN '1'
-- ELSE '0'
-- END AS UPI_CREDITLINE_limit_UPI_limit_flag
FROM pivoted_limits p
JOIN merchant_types m ON p.merchantid = m.merchantid));
-- where UPI_CC_limit_ov_lmt_flag = '1' OR UPI_limit_ov_lmt_flag = '1'
-- OR CC_limit_ov_lmt_flag = '1' OR DC_limit_ov_lmt_flag = '1'
-- OR UPI_CREDITLINE_limit_ov_lmt_flag = '1' OR UPI_CC_limit_UPI_limit_flag = '1'



Comments