首页 > 解决方案 > 未指定具有 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 上独立运行相同的查询。

标签: sql-server

解决方案


因为CTE您需要为每一列定义一个名称。由于您使用的是表表达式,因此您必须通过为每列命名来清楚地指定结构。例如,您不能有一个没有任何列名的表。

您需要提供别名才能Count(d)喜欢以下内容。

Count(d) as CountD

除此之外,您的函数中还有其他语法问题。

1- (@p1 NVARCHAR(40),)"," 是额外的。

2-不是使用一个CTE,而是使用两个CTE语法不正确


推荐阅读