HIVESQL查询where语句协助

时间:2020-08-04 21:37:38

标签: sql hiveql

我有一个查询要提取交易记录。我希望能够针对每个个案编号的任何交易,提取我的商品字段= A1和newvalue字段<> A1的交易。换句话说,我有2个案例编号,每个案例编号有5个交易,一个案例编号的交易记录为商品= A1和newvalue = A1。另一种情况有一条记录,其中商品= A1和newvalue = B2,这是我想在查询中返回的情况。请记住,前一种情况可能具有相同的事务,但由于有newvalue = A1的记录,因此不应返回该事务。我已附上一张图片,并以黄色突出显示的记录是我期望的输出结果。以下是我当前的“在哪里”声明,我需要重写帮助。有人还告诉我,我可能需要“ Group BY”语句,但我尝试过但仍得出相同的结果。 enter image description here

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

1 个答案:

答案 0 :(得分:0)

如果您不希望返回不存在b.newvalue ='A1'记录的个案,则计算分析sum()并将其用于where

select ...
from
(
select t.*, 
       sum(case when newvalue ='A1' then 1 else 0 end) over(partition by case_number) cnt_new_value_A1
  from ...
 where 
      FieldID = 6 --COMMODITY
   AND transacttypeid IN (1, 2, 3)
   AND commodity = 'A1'
)s
where cnt_new_value_A1 = 0 --No A1 in newvalue  per case_number
相关问题