У меня есть запрос, из которого я получаю транзакции. Я хочу иметь возможность извлекать транзакции, где мое поле товара = A1 и поле newvalue <> A1 для любой транзакции для каждого отдельного номера дела. Другими словами, у меня есть 2 номера дела с 5 транзакциями в каждом, один номер дела имеет запись транзакции товар = A1 и новое значение = A1. В другом случае есть запись, где товар = A1 и новое значение = B2, это тот случай, когда я хотел бы вернуть его в запрос. Имейте в виду, что в предыдущем случае может быть такая же транзакция, но ее не следует возвращать, потому что есть запись newvalue = A1. Я прикрепил изображение, и записи, выделенные желтым цветом, - это то, что я ожидал от своего вывода. Ниже приведено мое текущее утверждение «Где», которое мне нужно переписать. Мне также сказали, что мне может понадобиться оператор «Group BY», который я попробовал и получил те же результаты. введите описание изображения здесь
SELECT
Allcases.caseno as caseno, Allcases.division_desc as division_desc, Allcases.close_date as close_date, Allcases.week_of as week_of,
Allcases.case_type as case_type,
a.transactdate as transactdate, a.transacttypeid as transacttypeid, a.userid as userid,
concat(RTRIM(Usr.fullname), ' <', RTRIM(Usr.EmailAddress), '>') as CR1_CR2_FULLNAME,
Allcases.commodity as commodity,
b.oldvalue as oldvalue, b.newvalue as newvalue, changereason as changereason
FROM
(
select b.*, sum(case when b.newvalue = 'A1' then 1 else 0 end) over(partition by Allcases.caseno) cnt_new_value_A1
from
dataiku.qca_casedatachange_parquet b
INNER JOIN dataiku.qcatransact_parquet a
ON b.transactid = a.transactid
INNER JOIN dataiku.qca_validated_cases_consolidated_parquet Allcases
ON a.casedataid = Allcases.casedataid
INNER JOIN dataiku.set_qca_reclassification_head_parquet h
ON Allcases.caseno = h.caseno
INNER JOIN dataiku.qca_user_parquet Usr
ON a.UserID = Usr.UserID
where
b.FieldID = 6
AND a.transacttypeid IN (1, 2, 3)
AND Allcases.commodity = 'A1'
)s
where cnt_new_value_A1 = 0
ORDER BY Allcases.caseno, A.transactid