2016-06-06 2 views
1

Мне нужно написать запрос для получения результата для отображения OLD_ACCOUNT_ID, если доступно, еще NULL и NEW_ACCOUNT_ID, если доступно, еще NULL из той же таблицы на основе условий. Я попробовал такой запрос, как показано ниже, но это не создает данные в отдельных столбцах как OLD и NEW. Может кто-нибудь, пожалуйста, помогите.Как слить ту же таблицу с разными условиями

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

вы хотите увидеть как '' OLD_ACCOUNT_ID' и NEW_ACCOUNT_ID' для некоторых записей? – Alex

+0

MySQL или Teradata? Считаете ли вы использование COALESCE()? –

+0

Его Teradata и Да, я хочу видеть как OLD, так и NEW. Я хочу видеть OLD, когда доступно еще NULL, и я хочу видеть NEW, когда доступно еще NULL. – gbppa

ответ

1

Используйте случай

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

Спасибо .. Это работает – gbppa

+0

Хорошо, если мой ответ правильный, отметьте его как принятый .. – scaisEdge

Смежные вопросы