Muchas duplicaciones, causadas por una columna de números de teléfono. Necesito reducir las duplicaciones.
Ver consulta a continuación que devuelve aproximadamente 38 mil filas. Cuando se elimina la unión ‘phone’ y la columna, se reduce a las 15.5 mil filas correctas.
SELECT
tc.customer_no
,fdn.display_name_short 'name'
,tc.cont_amt
,tc.ref_no
,tc.cont_dt
,tc.cont_type
,tca.fyear
,(ISNULL(street1, 'none') + ' ' + ISNULL(city, 'none') + ' ' + ISNULL(state, 'none')
+ ', ' + ISNULL(postal_code, 'none')) 'address'
,ISNULL(tp.phone, 'none')
,ISNULL(te.address, 'none')
FROM T_CONTRIBUTION tc
JOIN FT_CONSTITUENT_DISPLAY_NAME() fdn
ON tc.customer_no = fdn.customer_no
JOIN T_CAMPAIGN tca
ON tc.campaign_no = tca.campaign_no
LEFT JOIN T_ADDRESS ta
ON tc.customer_no = ta.customer_no AND ta.primary_ind = 'y'
LEFT JOIN T_EADDRESS te
ON tc.customer_no = te.customer_no AND te.primary_ind = 'y'
LEFT JOIN T_PHONE tp
ON tc.customer_no = tp.customer_no
WHERE tca.fyear BETWEEN 2018 AND 2022
AND tc.cont_amt > 0
AND te.inactive = 'N'
AND ta.inactive = 'N'
¿Algún consejo sobre cómo puedo incluir la columna de números de teléfono, eliminando la mayor cantidad de duplicados posible? No tengo que ser muy preciso con esta consulta, pero necesito reducir la cantidad de filas lo más posible. La tabla de teléfonos tiene alrededor de 50 tipos de teléfono diferentes (por ejemplo, 1, 2 o 22), y la clave primaria es el número de teléfono. La base de datos solo utiliza los tipos de teléfono 1 o 2, pero estoy buscando datos de los últimos 4 años, antes de que cambiaran a utilizar solo dos tipos de teléfono.
davy.ai
Para incluir la columna de número de teléfono mientras se eliminan tantos duplicados como sea posible, puedes modificar la unión izquierda en la tabla T_PHONE para unir solo en el tipo de teléfono 1 o 2 utilizando la cláusula WHERE. Esto asegurará que solo se devuelva un número de teléfono para cada cliente, reduciendo el número de duplicados.
Aquí está la consulta modificada:
Al agregar
AND tp.phone_type IN (1, 2)
a la condición de unión izquierda en la tabla T_PHONE, la consulta solo devolverá un número de teléfono para cada cliente con un tipo de teléfono 1 o 2. Esto ayudará a reducir el número de duplicados y, por lo tanto, el número de filas.