Sql 列';dbo.mdSpaceSales.wkid';在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中
我得到了以下查询的上述错误:Sql 列';dbo.mdSpaceSales.wkid';在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我得到了以下查询的上述错误: SELECT a.stid, a.pfid, pf.pfname, a.mdid, mm.mdDescription, a.categoryid, a.SummedSpace, a.AvgSpace, mm.size_sqft as MML_size, a.TotalRev, a.TotalProfit, a.wkCount, a.Lastwkinst FROM (SELECT wkid, stid, mdid, pfid
SELECT
a.stid, a.pfid, pf.pfname, a.mdid,
mm.mdDescription, a.categoryid, a.SummedSpace,
a.AvgSpace, mm.size_sqft as MML_size, a.TotalRev,
a.TotalProfit, a.wkCount, a.Lastwkinst
FROM
(SELECT wkid, stid, mdid, pfid, categoryid,
sum([space]) as SummedSpace, avg([space]) as AvgSpace,
sum(revenue) as TotalRev, sum(profit) as TotalProfit,
count(wkid) as wkCount, max(wkid) as Lastwkinst
FROM dbo.mdSpaceSales
WHERE wkid > 200936 AND categoryid in (25, 16, 62, 4079)
GROUP BY stid, mdid, pfid, categoryid) AS a
LEFT JOIN mdmasterlist mm ON mm.mdid = a.mdid
LEFT JOIN
(SELECT distinct pfid, [pf name] as pfname FROM mdmasterlist) AS pf
ON pf.pfid = a.pfid
ORDER BY
stid, categoryid, a.pfid, a.mdid
有人能帮我解决这个错误吗?在子查询中,您说:
SELECT wkid,stid,mdid,pfid,categoryid,SUM()...
group by stid,mdid,pfid,categoryid
我认为需要:
SELECT wkid,stid,mdid,pfid,categoryid,SUM()...
group by wkid,stid,mdid,pfid,categoryid
否则,您将尝试让SQL Server猜测您希望在选择列表中使用哪个wkid。也许您的目的是不中断每个wkid(因为您似乎没有在外部查询中公开它),在这种情况下,它应该是:
SELECT stid,mdid,pfid,categoryid,SUM()...
group by stid,mdid,pfid,categoryid
在子查询中,您可以说:
SELECT wkid,stid,mdid,pfid,categoryid,SUM()...
group by stid,mdid,pfid,categoryid
我认为需要:
SELECT wkid,stid,mdid,pfid,categoryid,SUM()...
group by wkid,stid,mdid,pfid,categoryid
否则,您将尝试让SQL Server猜测您希望在选择列表中使用哪个wkid。也许您的目的是不中断每个wkid(因为您似乎没有在外部查询中公开它),在这种情况下,它应该是:
SELECT stid,mdid,pfid,categoryid,SUM()...
group by stid,mdid,pfid,categoryid
内部派生查询:必须分组(折叠)或聚合wkid 您正在尝试两种方法: 选择wkid计数(wkid)max(wkid)按stid、mdid、pfid、类别分组 我怀疑您需要删除第一个wkid,因此:
...
FROM
(SELECT /*wkid drop me*/, stid, mdid, pfid, categoryid,
sum([space]) as SummedSpace, avg([space]) as AvgSpace,
sum(revenue) as TotalRev, sum(profit) as TotalProfit,
count(wkid) as wkCount, max(wkid) as Lastwkinst
FROM dbo.mdSpaceSales
WHERE wkid > 200936 AND categoryid in (25, 16, 62, 4079)
GROUP BY stid, mdid, pfid, categoryid) AS a
LEFT JOIN
...
聚合的一个简单规则:必须能够用普通语言表达查询。内部派生查询:必须分组(折叠)或聚合wkid 您正在尝试两种方法: 选择wkid计数(wkid)max(wkid)按stid、mdid、pfid、类别分组 我怀疑您需要删除第一个wkid,因此:
...
FROM
(SELECT /*wkid drop me*/, stid, mdid, pfid, categoryid,
sum([space]) as SummedSpace, avg([space]) as AvgSpace,
sum(revenue) as TotalRev, sum(profit) as TotalProfit,
count(wkid) as wkCount, max(wkid) as Lastwkinst
FROM dbo.mdSpaceSales
WHERE wkid > 200936 AND categoryid in (25, 16, 62, 4079)
GROUP BY stid, mdid, pfid, categoryid) AS a
LEFT JOIN
...
聚合的一个简单规则:您必须能够用普通语言表达查询