I have users in that sometimes are registred twice with the same value for pn "Phonenumber". Knowing that pn PhoneNumber is the same I know that they should be the same rid "RegisterID". Trouble is that pn is not very reliable either and sometimes shows null values. How to do this partition?
I want to do something like this
WITH a AS (
SELECT 1 AS dt, 1 AS rid, 1 AS pn, 1 AS cnt
UNION ALL
SELECT 2 AS dt, 1 AS rid, 1 AS pn, 1 AS cnt
UNION ALL
SELECT 2 AS dt, 2 AS rid, 1 AS pn, 1 AS cnt
UNION ALL
SELECT 3 AS dt, 2 AS rid, 1 AS pn, 1 AS cnt
UNION ALL
SELECT 3 AS dt, 2 AS rid, NULL AS pn, 1 AS cnt
)
SELECT dt,
COALESCE(MIN(rid) OVER (PARTITION BY pn), rid) AS rid,
pn,
SUM(cnt) AS cnt
FROM a
GROUP BY dt, pn, rid
And get a result that looks like this:
dt rid pn cnt
1 1 1 1
2 1 1 2
3 1 1 2