2013-08-16 39 views
0

我試圖編寫一個查詢,該查詢返回第一列映射到第一列中的多個不同值的值的所有記錄第二列。我嘗試了以下,但得到了'不是一個單一組的功能'。我在這裏做錯了什麼?選擇查詢以返回列A具有一對多關係列B的記錄 - ORA-00937錯誤

select contact_id, count(location_account_id) 
from 
(select a.contact_id, a.location_account_id 
from crm.asset_plus a 
where a.contact_id is not null 
group by a.contact_id, a.location_account_id) 
having count(location_account_id) > 1 

回答

0

將HAVING子句移到子查詢中,並將計數也包含在子查詢SELECT中。

Select SQ.contact_id 
from (
     select a.contact_id 
       ,count(a.location_account_id) 
     from crm.asset_plus a 
     where a.contact_id is not null 
     group by 
       a.contact_id 
     having count(a.location_account_id) > 1 
     ) SQ 

如果您需要在最終輸出中包含計數 - 那麼只需使用子查詢就可以了。

基於下面的評論,這裏是一個修改後的查詢時,計數locatin_account_id

Select SQ.contact_id 
from (
     select a.contact_id 
       ,count(distinct a.location_account_id) 
     from crm.asset_plus a 
     where a.contact_id is not null 
     group by 
       a.contact_id 
     having count(distinct a.location_account_id) > 1 
     ) SQ 
+0

對不起,我需要找到記錄,其中每個contact_id鏈接到多個不同的location_account_id。 – StephenT

+0

好吧,這就是這個查詢所做的。 –

+0

它不,我在發佈問題之前嘗試了相同的查詢。它在有相同的contact_id值和相同的location_account_id值(以及我需要的記錄)有2條記錄的情況下引發。我只需要存在2+記錄的location_account_id具有相同contact_id值但不同的不同值的實例。 – StephenT

0

DISTICT值這是你的努力呢?

SELECT contact_id, location_account_id 
FROM crm.asset_plus a 
JOIN (
    SELECT contact_id, location_account_id 
    FROM crm.asset_plus 
    WHERE a.contact_id is not null 
    GROUP BY contact_id 
    HAVING count(1) > 1 
) X ON X.asset_plus = A.asset_plus AND X.location_account_id = A.location_account_id 
相關問題