[英]Group By & Having vs. SubQuery (Where Count is Greater Than 1)
我在這里努力嘗試編寫一個腳本,該腳本查找同一助理(計數大於1)多次返回的訂單。 我猜我的子查詢語法不正確。 運行腳本時,我收到一條消息,提示“ SELECT失敗。[3669]子查詢返回了多個值。”
我沒有綁定到子查詢,並嘗試僅使用group by和haveing語句,但是遇到有關非聚合值的錯誤。 進行此操作的最佳方法是什么?如何解決此問題?
在此先感謝您-代碼如下:
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
根據您到目前為止的經驗,我認為您想使用它:
where r.ORIG_SLTRN_ID in
(select
ORIG_SLTRN_ID
from
saletran_refund
group by ORIG_SLTRN_ID
having count (*) > 1)
這將為您提供具有多個行的ORIG_SLTRN_ID。
您沒有給出足夠的答案,但這只是一個開始
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.