2015-07-07 2 views
0

Привет, я сделал 2 запроса для обновления некоторых данных. Но мне нужно сделать его более простым. вместо того, чтобы делать 2 запроса, мне нужно сделать один запрос. и соединения, которые я использовал, мне нужно использовать его только один раз. любой орган может помочь мне с этим:Множественная регистрация, несколько операторов where и несколько обновлений

Текущий запрос:

USE DB02 
GO 

UPDATE TCC 
SET RANK = 'S' 
FROM TOTAL_NEGO_HISTORY TNH 
    JOIN M_CONTRACT MC     ON TNH.CONTRACT_ID = MC.CONTRACT_ID 
    JOIN T_DEPOSIT_ASSIGNED_LIST TDAL ON TDAL.CONTRACT_ID = MC.CONTRACT_ID 
    JOIN T_DEPOSIT_HISTORY TDH   ON TDH.DEPOSIT_NO = TDAL.DEPOSIT_NO 
    JOIN T_CREDIT_CONTRACT TCC   ON TCC.CONTRACT_ID = MC.CONTRACT_ID 
WHERE TDH.DEPOSIT_YMD = TNH.COMMITMENT_DATE 
GO 


UPDATE TCC 
SET RANK = 'C2' 
FROM TOTAL_NEGO_HISTORY TNH 
    JOIN M_CONTRACT MC     ON TNH.CONTRACT_ID = MC.CONTRACT_ID 
    JOIN T_DEPOSIT_ASSIGNED_LIST TDAL ON TDAL.CONTRACT_ID = MC.CONTRACT_ID 
    JOIN T_DEPOSIT_HISTORY TDH   ON TDH.DEPOSIT_NO = TDAL.DEPOSIT_NO 
    JOIN T_CREDIT_CONTRACT TCC   ON TCC.CONTRACT_ID = MC.CONTRACT_ID 
WHERE TDH.DEPOSIT_MONEY = TNH.COMMITMENT_AMAOUNT 
GO 

Ожидаемое что-то вроде ниже:

USE DB02 
GO 

UPDATE TCC 
SET RANK = 'S' case WHEN TDH.DEPOSIT_YMD = TNH.COMMITMENT_DATE 
SET RANK = 'C2' case WHEN TDH.DEPOSIT_MONEY = TNH.COMMITMENT_AMAOUNT 
FROM TOTAL_NEGO_HISTORY TNH 
    JOIN M_CONTRACT MC     ON TNH.CONTRACT_ID = MC.CONTRACT_ID 
    JOIN T_DEPOSIT_ASSIGNED_LIST TDAL ON TDAL.CONTRACT_ID = MC.CONTRACT_ID 
    JOIN T_DEPOSIT_HISTORY TDH   ON TDH.DEPOSIT_NO = TDAL.DEPOSIT_NO 
    JOIN T_CREDIT_CONTRACT TCC   ON TCC.CONTRACT_ID = MC.CONTRACT_ID 
GO 

ответ

1
USE DB02 
GO 

UPDATE TCC 
SET  RANK = (Case WHEN TDH.DEPOSIT_YMD = TNH.COMMITMENT_DATE Then 'S' 
        WHEN TDH.DEPOSIT_MONEY = TNH.COMMITMENT_AMAOUNT Then 'C2' 
        Else RANK ----there should be else to handle case when properly 
       End) 
FROM TOTAL_NEGO_HISTORY TNH 
     JOIN M_CONTRACT MC     ON TNH.CONTRACT_ID = MC.CONTRACT_ID 
     JOIN T_DEPOSIT_ASSIGNED_LIST TDAL ON TDAL.CONTRACT_ID = MC.CONTRACT_ID 
     JOIN T_DEPOSIT_HISTORY TDH   ON TDH.DEPOSIT_NO = TDAL.DEPOSIT_NO 
     JOIN T_CREDIT_CONTRACT TCC   ON TCC.CONTRACT_ID = MC.CONTRACT_ID 
GO 
+0

Вы можете использовать 'Else RANK' оставить значение, как это был – cha

+0

Ohh !, Извините, моя ошибка, вы правы –

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