我在这里努力尝试编写一个脚本,该脚本可以找到同一个伙伴(计数大于1)多次返回订单的位置。我用子查询猜测我的语法是不正确的。当我运行脚本时,我收到一条消息," SELECT失败.. [3669]子查询返回了多个值。"
我没有与子查询绑定,并且尝试仅使用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
答案 0 :(得分:2)
根据您目前所做的事情,我认为您想要使用它:
where r.ORIG_SLTRN_ID in
(select
ORIG_SLTRN_ID
from
saletran_refund
group by ORIG_SLTRN_ID
having count (*) > 1)
这将为您提供具有多行的ORIG_SLTRN_ID。
答案 1 :(得分:0)
你没有给出足够的答案,但这是一个开始
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
这确实更多地返回一行
跑吧
SELECT count(*)
FROM saletran_refund
GROUP BY ORIG_SLTRN_ID