Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Mysql 具有多个计数()和分组依据的查询_Mysql_Sql Server - Fatal编程技术网

Mysql 具有多个计数()和分组依据的查询

Mysql 具有多个计数()和分组依据的查询,mysql,sql-server,Mysql,Sql Server,我有一个查询,返回所有的船舶零件、工厂零件、每个零件的输入日期,以及由谁与他们各自的电子邮件。但是我需要每个人输入的所有船舶零件和工厂零件的总数,所以我添加了下面的计数函数,但我一直得到这个错误“每个表达式组必须至少包含一列,而不是外部引用。”有什么想法吗 select Distinct cc.FirstName+' '+cc.LastName AS 'Name', UEmail AS 'Email', sp.SEntered AS 'Date Entered', COUNT(sp.SHIPID

我有一个查询,返回所有的船舶零件、工厂零件、每个零件的输入日期,以及由谁与他们各自的电子邮件。但是我需要每个人输入的所有船舶零件和工厂零件的总数,所以我添加了下面的计数函数,但我一直得到这个错误“每个表达式组必须至少包含一列,而不是外部引用。”有什么想法吗

select Distinct cc.FirstName+' '+cc.LastName AS 'Name', UEmail AS 'Email', sp.SEntered AS 'Date Entered', COUNT(sp.SHIPID) AS 'Shipments',   COUNT(pn.PNumber) AS 'Factory Parts'
from R_USERS_Detail U
join R_SHIPMENTS sp on sp.UID=U.UID
join R_SHIPMENTOrders sd on sd.SHIPID=sp.SHIPID
join R_PARTOrders pn on pn.PNumberID=sd.PNumberID
join R_Clients c on c.COClientID=sp.COClientID AND c.COClientAcronym LIKE '%AME%'
join R_Contacts cc on cc.COContactID=u.COContactID
group by u.UEmail, sp.SEntered, 'Name'

您必须使用
group by
claus中的精确表达式,而不是别名

select cc.FirstName+' '+cc.LastName AS 'Name'
     , UEmail AS 'Email'
     , sp.SEntered AS 'Date Entered'
     , COUNT(sp.SHIPID) AS 'Shipments'
     , COUNT(pn.PNumber) AS 'Factory Parts'
from R_USERS_Detail U
join R_SHIPMENTS sp on sp.UID=U.UID
join R_SHIPMENTOrders sd on sd.SHIPID=sp.SHIPID
join R_PARTOrders pn on pn.PNumberID=sd.PNumberID
join R_Clients c on c.COClientID=sp.COClientID AND c.COClientAcronym LIKE '%AME%'
join R_Contacts cc on cc.COContactID=u.COContactID
group by u.UEmail, sp.SEntered, cc.FirstName+' '+cc.LastName

1) SQL Server还是MySQL?2) 是否在一个查询中使用DISTINCT和GROUP BY?3)
选择cc.FirstName+“”+cc.LastName作为“名称”,UEmail作为“电子邮件”,sp.sented作为“输入日期”,COUNT(sp.SHIPID)作为“装运”,COUNT(pn.PNumber)作为R_用户的“工厂零件”\U详细说明U加入R_装运sp.UID=U.UID加入R_Shipmenters sd on sd.SHIPID=sp.SHIPID加入R_零件订单pn.PNumberID=sd.PNumberID加入R_客户c on c.COClientID=sp.COClientID和c.coclientaronym,如“%AME%”加入R_联系人cc.COContactID=U.COContactID组,通过U.UEmail发送,cc.FirstName+“”+cc.LastName
成功了!非常感谢,最后一个问题,如果你不介意的话,有没有办法让名字出现一次?我运行了它,货物和零件已经合计,但每个人都出现了多次,我想这是因为输入的日期不同,有没有办法解决这个问题?如果输入的日期不同,并且您按日期分组,那么您将看到同一个人的多个实例,具有不同的日期,您可以稍微操纵查询,但要显示特定的日期,如最后一个日期或第一个日期等。