2013-08-12 61 views
0
select distinct (Member_Mailid), OrderLog_City, Member_MailId, 
     OrderLog_MovieName, OrderLog_MovieLanguage 
from tbl_OrderLog 
where 
OrderLog_Initiated between 
    '2013-02-01 00:00:01.010' and '2013-02-01 23:59:59.990' 
and OrderLog_MovieLanguage in 
    ('TAMIL','ENGLISH','HINDI','MALAYALAM') 
group by Member_Mailid 
having 
count(Member_Mailid)>3 
order by member_mailid asc 

當我運行上述查詢時,我面臨一些錯誤。Sql Server 2008曖昧和聚合函數錯誤

我需要在我的結果如下列,這就是爲什麼我在select聲明之前指定:

(OrderLog_City, 
Member_MailId, 
OrderLog_MovieName, 
OrderLog_MovieLanguage) 

將列出誰看過3次以上和5倍的客戶。

但它會拋出一個錯誤;因爲它 並不在聚合函數或GROUP BY子句 包含

消息8120,級別16,狀態1,行1列 「tbl_OrderLog.OrderLog_City」在選擇列表中無效。

消息209,級別16,狀態1,9號線不明確的列名 「member_mailid」

回答

0

你不能因爲你使用COUNT混合DISTINCTGROUP BY

,你需要聚合與GROUP BY

您需要在GROUP BY條款的所有非集合列。

如果您想根據上面的查詢來獲取不同的 Member_Mailid值註釋

select Member_Mailid 
    , OrderLog_City 
    , OrderLog_MovieName 
    , OrderLog_MovieLanguage 
from tbl_OrderLog 
where OrderLog_Initiated between '2013-02-01 00:00:01.010' and '2013-02-01 23:59:59.990' 
    and OrderLog_MovieLanguage in ('TAMIL','ENGLISH','HINDI','MALAYALAM') 
group by Member_Mailid 
    , OrderLog_City 
    , OrderLog_MovieName 
    , OrderLog_MovieLanguage 
having COUNT(Member_Mailid) > 3 
order by member_mailid asc 

編輯,只是變成一個子查詢和運行DISTINCT

像這樣的東西應該成功運行反對:

select distinct(Member_Mailid) 
from 
(
    select Member_Mailid 
    from tbl_OrderLog 
    where OrderLog_Initiated between '2013-02-01 00:00:01.010' and '2013-02-01 23:59:59.990' 
    and OrderLog_MovieLanguage in ('TAMIL','ENGLISH','HINDI','MALAYALAM') 
    group by Member_Mailid 
    , OrderLog_City 
    , OrderLog_MovieName 
    , OrderLog_MovieLanguage 
    having COUNT(Member_Mailid) > 3 
) m 
+0

感謝您的回覆Mr.Preston,但不幸的是我面對一個名爲「消息209一個錯誤,級別16,狀態1,行15 Ambiguou s列名'member_mailid'。「 – Keerthi

+0

對不起,我想我的專欄翻了一番。請參閱編輯後的查詢。 –

+0

謝謝Mr.Preston,所以在這個最後的查詢中,我可以得到不同的成員郵件ID,還有COUNT(Member_Mailid)> 3(做過3次以上的交易)...?可能嗎...? – Keerthi