首页 > 解决方案 > 创建视图时出现问题,列无效

问题描述

我正在尝试从 Northwind 数据库创建每个客户每年下达的订单数量的视图。但是,我在 Azure Data Studio 上收到错误消息“列 'Northwind.dbo.Orders.OrderDate' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中”。我的代码如下。

CREATE OR ALTER VIEW vCustomerOrderCounts AS 
SELECT 
  CompanyName,
  Count(OrderID) AS 'NumberOfOrders',
  Year(OrderDate) AS 'Order Year'
FROM Northwind.dbo.Customers, Northwind.dbo.Orders
GROUP BY CompanyName;
GO

SELECT * FROM vCustomerOrderCounts

标签: sqlazure

解决方案


切勿FROM子句中使用逗号。 始终使用正确、明确、标准 JOIN的语法。

你的GROUP BYSELECT不兼容。此外,我强烈建议您使用不需要转义的列名:

CREATE OR ALTER VIEW vCustomerOrderCounts AS 
    SELECT c.CompanyName,
           Count(*) AS NumberOfOrders,
           Year(o.OrderDate) AS OrderYear
    FROM Northwind.dbo.Customers c JOIN
         Northwind.dbo.Orders o
         ON c.customerId = o.customerId -- or whatever the JOIN conditions are
    GROUP BY c.CompanyName, Year(o.OrderDate);

推荐阅读