Group By & Having 与 SubQuery(计数大于 1)

Group By & Having vs. SubQuery (Where Count is Greater Than 1)

我在这里苦苦挣扎,试图编写一个脚本来查找同一个同事多次返回订单的位置(计数大于 1)。我猜我的子查询语法不正确。当我 运行 脚本时,我收到一条消息 "SELECT failed.. [3669] More than one value was returned by the subquery."

我没有绑定到子查询,并尝试仅使用 group by 和 having 语句,但我收到有关非聚合值的错误。在这里进行的最佳方式是什么?我该如何解决这个问题?

提前致谢 - 代码如下:

SEL         s.saletran                                                          
            , s.saletran_dt SALE_DATE
            , r.saletran_id RET_TRAN
            , r.saletran_dt RET_DATE
            , ra.user_id RET_ASSOC
FROM        salestrans s

JOIN        salestrans_refund   r
            ON      r.orig_saletran_id = s.saletran_id
            AND r.orig_saletran_dt = s.saletran_dt
            AND r.orig_loc_id = s.loc_id
            AND r.saletran_dt between s.saletran_dt and s.saletran_dt + 30

JOIN        saletran rt     
            ON          rt.saletran_id = r.saletran_id
            AND     rt.saletran_dt = r.saletran_dt
            AND     rt.loc_id = r.loc_id

JOIN        assoc ra                    --Return Associate
            ON          ra.assoc_prty_id = rt.sls_assoc_prty_id

WHERE  
            (SELECT count(*)
            FROM            saletran_refund
            GROUP BY  ORIG_SLTRN_ID
            ) > 1

            AND     s.saletran_dt between '2015-01-01' and current_date - 1

你没有给出足够的完整答案,但这是一个开始

group by s.saletran                                                          
            , s.saletran_dt SALE_DATE
            , r.saletran_id RET_TRAN
            , r.saletran_dt RET_DATE
            , ra.user_id RET_ASSOC 
having count(distinct(ORIG_SLTRN_ID)) > 0

这 return 多了一行
运行 它

SELECT count(*)
FROM saletran_refund
GROUP BY  ORIG_SLTRN_ID

根据你目前的情况,我认为你想改用这个:

where r.ORIG_SLTRN_ID in
(select 
ORIG_SLTRN_ID
from
saletran_refund
group by ORIG_SLTRN_ID
having count (*) > 1)

这将为您提供不止一行的 ORIG_SLTRN_IDs。