2017-01-20 3 views
0
UPDATE SQ_DEAL_PARTNER SET PRIMARY_FL =PRIMARYFL WHERE DPID = 
    (SELECT DPID, MIN(CASE WHEN DPID IN (SELECT MIN(DPID) 
    FROM SQ_DEAL_PARTNER WHERE DID=17664)THEN 'Y' ELSE 'N' END)PRIMARYFL 
    FROM sq_deal_partner dl 
    WHERE DID=17664 
    AND PARTNER_TY = 'D' 
    GROUP BY DPID); 

Как я могу обновить выше этого заявления, пожалуйста, помогите в этом.Как обновить данные столбца на основе заданного оператора выбора?

Это мой запрос я хочу вывода, как этот

dpid primary_fl 
123  y 
124  n 
125  n 
+0

Когда вы размещаете, вы вообще должны показать четыре вещи. Вы отправили два из них, пожалуйста, добавьте два других. Это: (1) описание вашей базовой таблицы или таблиц (имя таблицы, имя столбца и типы данных, только для столбцов, участвующих в решении проблемы) и некоторые примеры данных. (2) Четкое изложение требования - используемая логика. (3) Как должен выглядеть результат. (4) То, что вы пробовали. Теперь: вы разместили (3) и (4), нам все еще нужны (1) и (2). – mathguy

+0

@mathguy Мне нужно обновить primary_fl на основе min (dpid) .if предположим, что min (dpid) then primary_fl = 'Y' elseprimary_fl = 'N' – swamy

ответ

0

Я рекомендую использовать половину слияния Постулаты:

MERGE INTO SQ_DEAL_PARTNER dest 
USING (SELECT DPID, 
       MIN(CASE 
        WHEN DPID IN (SELECT MIN(DPID) 
            FROM SQ_DEAL_PARTNER 
            WHERE DID=17664) 
        THEN 'Y' 
        ELSE 'N' 
        END) PRIMARYFL 
     FROM sq_deal_partner dl 
     WHERE DID=17664 
      AND PARTNER_TY = 'D' 
     GROUP BY DPID) src 
ON (src.DPID = dest.DPID) 
WHEN MATCHED THEN 
UPDATE SET 
dest.PRIMARY_FL = src.PRIMARYFL; 
+0

есть ли какой-либо возможный метод. Могли бы вы предоставить me.thanks – swamy

+0

спасибо для быстрого воспроизведения. Но есть ли простой способ? – swamy

+0

Я попробую, но извините за мой eng :) Подумайте о dest и src, как о двух разных таблицах. Dest - это ваша destanation, и вам нужно найти в исходной таблице (src) соответствие строк, записанных в состоянии ON. Просто вам нужно подготовить src SELECT, чтобы выровнять правильные строки. Посмотрите здесь: http://www.dba-oracle.com/oracle_tips_rittman_merge.htm MERGE - очень полезный инструмент, и это легко понять;) – ASz

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