Оракул оставил соединение дать дубликат - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь получить всех клиентов, независимо от того, имеют ли они службу установки, из TRANS_TABLE.

NOA- запрос, чтобы получить только продукт MAX, и снова присоединиться к TRANS_TABLE по идентификатору электронной почты, чтобы получить все MAX.сведения о клиентах (если они установили службу, добавив ДА или НЕТ, но этот запрос также возвращает дубликат с продуктом REP

Ниже приведен мой Oracel Query, в котором дублируется

with CTE as (SELECT NOA.*, 
       CASE 
         WHEN TRANS_TABLE.product_name LIKE '%Installation%' THEN 'Y' 
         ELSE 'N' 
       END AS Installaion ,
       ROW_NUMBER() OVER (PARTITION BY TRANS_TABLE.email_address ORDER BY TRANS_TABLE.email_address) AS rn

FROM   (SELECT DISTINCT email_address         
        FROM  TRANS_TABLE
        WHERE  email_address IS NOT NULL
and pdct_name like '%MAX%'      
               ) NOA 
       LEFT JOIN TRANS_TABLE 
              ON NOA.email_address = TRANS_TABLE.email_address 
              select * from cte where rn='1'

Table and the expected result

1 Ответ

0 голосов
/ 27 июня 2019

Следующий код поможет:

CTE AS (
    SELECT
        NOA.*,
        CASE
            WHEN TRANS_TABLE.PDCT_NAME LIKE '%INSTALLATION%' THEN 'Y' -- case sensitive name is used
            ELSE 'N'
        END AS INSTALLAION,
        ROW_NUMBER() OVER(
            PARTITION BY TRANS_TABLE.EMAIL_ADDRESS
            ORDER BY
                TRANS_TABLE.EMAIL_ADDRESS
        ) AS RN
    FROM
        (
            SELECT DISTINCT
                PDCT_NAME,
                EMAIL_ADDRESS
            FROM
                TRANS_TABLE
            WHERE
                EMAIL_ADDRESS IS NOT NULL
                AND PDCT_NAME LIKE '%MAX%'
        ) NOA
        LEFT JOIN TRANS_TABLE ON NOA.EMAIL_ADDRESS = TRANS_TABLE.EMAIL_ADDRESS
        WHERE TRANS_TABLE.PDCT_NAME NOT LIKE '%REP%') -- added this WHERE condition
SELECT
   PDCT_NAME,  EMAIL_ADDRESS, INSTALLAION
FROM
    CTE
WHERE
    RN = '1'

db <> fiddle demo

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...