sql-server - 未指定具有 CTE 列名称的 UDF 错误
问题描述
这个查询我可以独立成功运行,但只要我输入 UDF,
> column name is not specified for column
错误出现了。桌子就像
Name a b c d e
Peter 1 2 3 2 1
Linda 1 2 2 2 1
例如,我简化了查询,例如
ALTER FUNCTION [dbo].[test]
RETURNS TABLE
AS
RETURN
WITH CTE AS(SELECT
a,b,c,d,e
FROM nametable)
SELECT
a,
b,
Count(d),
avg(c)
FROM CTE Group By a,b
一旦我删除 Count(d),它就可以工作,但是当我添加它时,我无法更改该函数。我可以在 SSMS 上独立运行相同的查询。
解决方案
因为CTE
您需要为每一列定义一个名称。由于您使用的是表表达式,因此您必须通过为每列命名来清楚地指定结构。例如,您不能有一个没有任何列名的表。
您需要提供别名才能Count(d)
喜欢以下内容。
Count(d) as CountD
除此之外,您的函数中还有其他语法问题。
1- (@p1 NVARCHAR(40),)
"," 是额外的。
2-不是使用一个CTE
,而是使用两个CTE
语法不正确
推荐阅读
- javascript - GSAP 3 Scroll Trigger on leave动画反转
- java - 有网络时自动刷新Activity
- python - 使用正则表达式将数据提取到数据框
- javascript - 使用 show hide jQuery 时的验证输入
- go - 如何在 go lang 中动态注册类型
- c# - 如何在控制台应用程序中存储日志文件
- reactjs - 在按钮单击中重置倒数计时器
- python - 在 google 中反复搜索书名,然后单击来自 amazon.com 的链接
- python - Aws lambda 调用 sftp 服务器并解密新文件并移动它们
- delphi - user32.dll 中不再存在 CreateWindow