当我在 SQL Server 中尝试以下代码时,
SELECT
dbo.Category.CatNo as Category,
dbo.Category.Categaory as Name,
(select SUM(dbo.SALES.SELLINC) where (dbo.SALES.DATE BETWEEN '2016-07-17' AND '2016-07-23')) AS ActualSales,
(select SUM(dbo.SALES.SELLINC) where (dbo.SALES.DATE BETWEEN '2015-07-19' AND '2015-07-25')) AS LastYrVariance,
(select SUM(dbo.SALES.SELLINC) where (dbo.SALES.DATE BETWEEN '2016-01-01' AND '2016-09-05')) AS YrToDateActual,
(select SUM(dbo.SALES.SELLINC) where (dbo.SALES.DATE BETWEEN '2015-01-01' AND '2015-09-05')) AS LastYrToDateActual
FROM dbo.Category INNER JOIN
dbo.Dissection ON dbo.Category.CatNo = dbo.Dissection.CatNo INNER JOIN
dbo.Division ON dbo.Dissection.DivNo = dbo.Division.ID INNER JOIN
dbo.Departments ON dbo.Dissection.DeptNo = dbo.Departments.DeptID INNER JOIN
dbo.SALES ON dbo.Dissection.DissNo = dbo.SALES.CODE
WHERE (dbo.SALES.BRN = 1)
GROUP BY dbo.Category.CatNo, dbo.Category.Categaory
ORDER BY dbo.Category.CatNo
我收到以下错误消息,
Msg 8120, Level 16, State 1, Line 2 Column 'dbo.Category.CatNo' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
请问有什么帮助吗?
最佳答案
我找不到在您的查询中生成该错误的原因。您可以使用 CASE
语句来简单地进行这些子查询
SELECT dbo.category.catno AS Category,
dbo.category.categaory AS NAME,
Sum(CASE WHEN dbo.sales.date BETWEEN '2016-07-17' AND '2016-07-23' THEN dbo.sales.sellinc END) AS ActualSales,
Sum(CASE WHEN dbo.sales.date BETWEEN '2015-07-19' AND '2015-07-25' THEN dbo.sales.sellinc END) AS LastYrVariance,
Sum(CASE WHEN dbo.sales.date BETWEEN '2016-01-01' AND '2016-09-05' THEN dbo.sales.sellinc END) AS YrToDateActual,
Sum(CASE WHEN dbo.sales.date BETWEEN '2015-01-01' AND '2015-09-05' THEN dbo.sales.sellinc END) AS LastYrToDateActual
FROM dbo.category
INNER JOIN dbo.dissection
ON dbo.category.catno = dbo.dissection.catno
INNER JOIN dbo.division
ON dbo.dissection.divno = dbo.division.id
INNER JOIN dbo.departments
ON dbo.dissection.deptno = dbo.departments.deptid
INNER JOIN dbo.sales
ON dbo.dissection.dissno = dbo.sales.code
WHERE ( dbo.sales.brn = 1 )
GROUP BY dbo.category.catno,
dbo.category.categaory
ORDER BY dbo.category.catno
关于sql - 使用 where 和 groupby 进行子选择 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39333811/