Нужно выяснить, когда и ID имеют два разных кода, связанных в SQL - PullRequest
0 голосов
/ 05 июля 2019

Привет мне нужна помощь с этим в SQL.

У меня есть такой запрос

select sub.*
from(
    select 
        distinct columnA,   
        case
            'some logic that is working'
        end as ColumnB,
        columnC,    
        "ColumnD"
    from Table1
    where "ColumnD"::date = 'some date'
    UNION
    select 
        distinct columnA,   
        case
            'some logic that is working'
        end as ColumnB,
        columnC,    
        "ColumnD"
    from Table1
    where "ColumnD"::date = 'some date'
    ) sub
order by sub.columnC

                 Result 
   Column A  Column B  Column C  Column D  
       abc      old       a 
       abc      old       a
       jhk      old       b
       1ab2     new       b
       25sa     new       c
       24sb     new       d
       ujy      old       e
       45wr     new       e 

Теперь в столбце A у нас есть код, связанный с клиентом, эти коды изменены с цифр на буквенно-цифровые.Поэтому мне нужно создать еще один запрос для работы с этим результатом (результат первого запроса), чтобы идентифицировать всех клиентов, которые перешли со старых кодов на новые коды.Вывод должен быть примерно таким

    oldCode  currentCode  oldType  newType
      jhk       1ab2        old      new 
      ujy       45wr        old      new  

Спасибо

1 Ответ

0 голосов
/ 05 июля 2019

Вы можете использовать SELF JOIN для таблицы результатов, чтобы получить ожидаемый результат.

Кроме того, вы можете использовать временную таблицу для хранения результата сложного запроса, в противном случае для простого запроса вы можете использовать свой первый запрос непосредственно в FROM предложении второго запроса.

CREATE TEMPORARY TABLE test
SELECT * FROM tblname;   //this line you can write your first query 

CREATE TEMPORARY TABLE test_copy LIKE test;
INSERT INTO test_copy (SELECT * FROM test);

SELECT 
    t.ColumnA as oldCode,
    t1.ColumnA as newCode,
    t.ColumnB as oldType,
    t1.ColumnB as newType
FROM 
    test as t JOIN test_copy as t1
    ON t.ColumnC=t1.ColumnC
WHERE 
    t.ColumnB="old" AND t1.ColumnB="New";

DEMO

...