sql - 创建视图时出现问题,列无效
问题描述
我正在尝试从 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
解决方案
切勿在FROM
子句中使用逗号。 始终使用正确、明确、标准 JOIN
的语法。
你的GROUP BY
和SELECT
不兼容。此外,我强烈建议您使用不需要转义的列名:
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);
推荐阅读
- http - Google Home 发出 http 请求的能力
- python - 空格 to_string 输出
- java - 为项目重新请求对谷歌驱动器的权限失败
- r - 使动态wellPanels闪亮
- mongodb - 使用 Robo 3T 连接 MongoDB Atlas 时如何修复 SSL 隧道故障
- nginx - NodePort 上的 Kubernetes Nginx 入口控制器
- ios - 如何知道我们是否可以使用 half4 而不是 float4?
- php - 在 php-header 的菜单中突出显示当前页面
- laravel - 在 Laravel 中,当页面被支持时,我得到旧的会话变量
- javascript - 当数据结构与 Mongoose 中的模型完全匹配时,如何一次增加多个字段?