簡體   English   中英

分組依據和擁有與子查詢(計數大於1)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM