开发者社区> 问答> 正文

SQL Server聚合函数问题

我试图显示员工姓名,购买日期和交易次数。

下面是我的代码;我得到这个错误:

消息147,级别15,状态1,行260 聚合可能不会出现在WHERE子句中,除非它在包含在HAVING子句或选择列表中的子查询中,并且正在聚合的列是外部引用。

码:

select
    mt.StaffName,
    mp.PurchaseDate,
    [TotalTransaction] = count(mp.PurchaseID)
from 
    MsStaff mt 
join 
    MsPurchase mp on mt.staffid = mp.staffid
where 
    mt.staffname like '%o%' 
    and count(mp.PurchaseID) > 1

展开
收起
祖安文状元 2020-01-04 15:53:16 530 0
1 条回答
写回答
取消 提交回答
  • 您需要使用GBH — GROUP BY和HAVING子句。

    SELECT mt.StaffName,
           mp.PurchaseDate,
           [TotalTransaction] = COUNT(mp.PurchaseID)
      FROM MsStaff mt JOIN MsPurchase mp ON mt.staffid = mp.staffid
     WHERE mt.staffname LIKE '%o%'
     GROUP BY mt.StaffName, mp.PurchaseDate
    HAVING COUNT(mp.PurchaseID) > 1
    
    

    请注意,COUNT(mp.PurchaseID)仅计算列中的非NULL值mp.PurchaseID。它比COUNT(*)除非优化程序可以确定中没有NULL值要慢mp.PurchaseID。

    2020-01-04 15:53:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载