Sql Server Update Select Where

У меня есть таблица Tickets где хранятся данные билета и в нем есть столбцы

BSONUM где хранятся номер билета

DEALDATE где хранятся дата продажа

OPERTYPE где хранятся Транзакция билета (продажа, возврат, аннуляция итд)

У меня появилась задача, создать столбец DateSaleForRefund в таблице Tickets и в нем отобразить дату продажи билета если номер билет совпадает с номером билета и транзакция = возврат. Я сделал запрос UPDATE но каждый из билетов нужно вставлять чтобы обновилось. Вопрос как мне сделать запрос чтобы если номер билет совпадает с номером билета обновилось столбец DateSaleForRefund. Заранее спасибо

update s
    set s.DateSaleForRefund =(
        select b2.DEALDATE
        from Tickets b2
        where b2.BSONUM = s.BSONUM and b2.OPERTYPE=1) 
    from Tickets as s
    where s.BSONUM='4212435875456' and s.OPERTYPE='5' and s.DateSaleForRefund IS NULL 

Ответы (1 шт):

Автор решения: Konst

если OPERTYPE=1 - это дата продажи, а OPERTYPE=5 - это возврат, то:

update R
    set R.DateSaleForRefund = D.DEALDATE
    from 
        Tickets as R INNER JOIN (SELECT BSONUM, DEALDATE FROM Tickets WHERE OPERTYPE=1) as D ON R.BSONUM = D.BSONUM
WHERE
    R.OPERTYPE=5 and R.DateSaleForRefund IS NULL
→ Ссылка