Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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 tSQL错误:Msg 8120,simple AdventureWorks 2008 R2数据库上的16级_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql server tSQL错误:Msg 8120,simple AdventureWorks 2008 R2数据库上的16级

Sql server tSQL错误:Msg 8120,simple AdventureWorks 2008 R2数据库上的16级,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,尝试在tSql上升级并做一个简单的,或者我认为是一个简单的声明。此示例来自Microsoft的Virtual Acdamey类“查询Microsoft Sql Server 2012数据库”。以下是查询: Use AdventureWorks SELECT SalesOrderID, YEAR(OrderDate) AS OrderYear FROM Sales.SalesOrderHeader WHERE (CustomerID = 29974) GROUP B

尝试在tSql上升级并做一个简单的,或者我认为是一个简单的声明。此示例来自Microsoft的Virtual Acdamey类“查询Microsoft Sql Server 2012数据库”。以下是查询:

Use AdventureWorks
    SELECT SalesOrderID, YEAR(OrderDate) AS OrderYear
    FROM Sales.SalesOrderHeader
    WHERE (CustomerID = 29974)
    GROUP BY SalesPersonID, YEAR(OrderDate)
    HAVING (COUNT(*) > 1)
    ORDER BY SalesPersonID, OrderYear
这是错误消息 Msg 8120,16级,状态1,第2行 列“Sales.SalesOrderHeader.SalesOrderID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中


我使用的是SQL Server 2008 R2。谢谢各位。如有任何解释,我将不胜感激。

我不太确定您的目标,但看起来您正在尝试与销售人员进行分组。如果是这样,您应该进行更改

选择SalesOrderID,年(OrderDate)作为OrderYear 来自Sales.SalesOrderHeader 其中(CustomerID=29974) 按销售人员分组,年份(订单日期) 具有(计数(*)>1) 按销售人员的订单ONID,订单年份

选择SalesorSonid,年(OrderDate)作为OrderYear 来自Sales.SalesOrderHeader 其中(CustomerID=29974) 按销售人员分组,年份(订单日期) 具有(计数(*)>1) 按销售人员的订单ONID,订单年份


如果您使用Group子句,您需要按照错误消息指示的操作,将select tot to the Group子句中的列添加到Group子句中,或将其更改为select中的聚合函数。由于您说您只是在学习SQL,因此这些都是值得研究的好主题。SQL中的聚合和分组。

选择所需的
并在
分组方式中使用它

SELECT SalesPersonID, YEAR(OrderDate) AS OrderYear
    FROM Sales.SalesOrderHeader
    WHERE (CustomerID = 29974)
    GROUP BY SalesPersonID, YEAR(OrderDate)
    HAVING (COUNT(*) > 1)
    ORDER BY SalesPersonID, OrderYear

SalesOrderID
select
中,
SalesorSonid
group by
中,这就是为什么谢谢。我甚至没想过要找它。这种sql级别对我来说是新的。再次感谢。如果你能将其作为答案发布,我会非常乐意接受。NoDisplayName点击它。这可能是一个非常愚蠢的错误如果不是因为我对这件事有多陌生,那我该怎么办呢。谢谢安迪。我知道我可以依靠你们来帮助我。关于组子句的评论非常有用。谢谢。我会研究的。顺便说一句,帮我向落基山脉问好。我想念他们。天哪。我开始理解SQl是如何组合起来的。它的解析方式与任何程序都大不相同在过去的20年里,我一直在使用l语言。快速浏览一下tsql100解析器,就可以了解到这一点!!!!感谢NoDisplayName和Andy对Group子句语句的支持。