2016-06-06 11 views
1

Ich muss eine Abfrage schreiben, um ein Ergebnis zu produzieren, um die OLD_ACCOUNT_ID anzuzeigen, wenn verfügbar sonst NULL und die NEW_ACCOUNT_ID wenn verfügbar sonst NULL aus der gleichen Tabelle basierend auf den Bedingungen. Ich habe eine Abfrage wie unten versucht, aber dies erzeugt nicht die Daten in separaten Spalten wie OLD und NEW. Kann mir bitte jemand helfen?Wie die gleiche Tabelle mit verschiedenen Bedingungen zusammengeführt werden

SELECT DISTINCT  
A.ACCOUNT_ID as NEW_ACCOUNT_ID, 
A.ACTIVE_FLAG,A.DATA_ID 
FROM Table A 
WHERE DATA_SOURCE_PROVIDER_ID='X' 
AND ACTIVE_FLAG='Y' 
and DATA_ID= '12345678' 
union 
SELECT DISTINCT B.ACCOUNT_ID AS OLD_ACCOUNT_ID, 
B.ACTIVE_FLAG,B.DATA_ID 
FROM Table B 
WHERE DATA_SOURCE_PROVIDER_ID='X' 
AND ACTIVE_FLAG='N' 
and DATA_ID= '12345678' 
+0

tun Sie sowohl 'OLD_ACCOUNT_ID' und' NEW_ACCOUNT_ID' für einige Datensätze sehen? – Alex

+0

MySQL oder Teradata? Haben Sie COALESCE() in Erwägung gezogen? –

+0

Seine Teradata und Ja möchte ich sowohl ALT als auch NEU sehen. Ich möchte ALT sehen, wenn verfügbar, sonst NULL, und ich möchte NEU sehen, wenn verfügbar, sonst NULL. – gbppa

Antwort

1

Use Case

select DISTINCT 
    case ACTIVE_FLAG when 'Y' then ACCOUNT_ID end as NEW_ACCOUNT_ID, 
    case ACTIVE_FLAG when 'N' then ACCOUNT_ID end as OLD_ACCOUNT_ID, 
    ACTIVE_FLAG,D 
    DATA_ID 
from Table 
whene DATA_ID= '12345678'; 
+0

zu erhalten Thanks works – gbppa

+0

Gut, wenn meine Antwort richtig ist, bitte markieren Sie es als akzeptiert .. – scaisEdge

Verwandte Themen