Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 Sql Server 2008不明确和聚合函数错误_Sql Server 2008 - Fatal编程技术网

Sql server 2008 Sql Server 2008不明确和聚合函数错误

Sql server 2008 Sql Server 2008不明确和聚合函数错误,sql-server-2008,Sql Server 2008,当我运行上面的查询时,我会遇到一些错误 我的结果中需要以下列,这就是我之前在select语句中指定的原因: 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'

当我运行上面的查询时,我会遇到一些错误

我的结果中需要以下列,这就是我之前在
select
语句中指定的原因:

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
其中列出了观看次数超过3次和5次的客户

但它抛出了一个错误

Msg 8120,16级,状态1,第1行列 “tbl_OrderLog.OrderLog_City”在选择列表中无效,因为它 未包含在聚合函数或GROUP BY中 条款

Msg 209,第16级,状态1,第9行不明确的列名 “成员邮件ID”


您不能将
DISTINCT
groupby
混合使用

由于您使用的是
计数
,因此需要使用
分组依据
进行聚合

您需要在
GROUPBY
子句中包含所有非聚合列

类似这样的操作应能成功运行:

(OrderLog_City,
Member_MailId,
OrderLog_MovieName,
OrderLog_MovieLanguage) 
评论后编辑

如果您想根据上述查询获取不同的
Member\u Mailid
值,只需转换为子查询并对其运行
distinct

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

感谢您回复普雷斯顿先生,但不幸的是,我遇到了一个错误,名为“Msg 209,16级,状态1,第15行不明确的列名‘member_mailid’。”对不起,我想我有一个列翻了一倍。请查看编辑过的查询。谢谢普雷斯顿先生,所以在最后一个查询中,我可以获得不同的成员邮件ID并计算(member_mailid)>3吗(做了3次以上的交易)…是否可能…?我不是100%确定您要做什么,但我添加了另一个查询,这可能会有所帮助。如果这仍然不是您要做的,您最好的选择是添加一些具有预期结果的示例数据,以便很容易看到您需要的确切内容。
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