Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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:在Select中调整Rank语句时出现问题_Sql_Sql Server_Stored Procedures_Ranking_Rank - Fatal编程技术网

SQL Server:在Select中调整Rank语句时出现问题

SQL Server:在Select中调整Rank语句时出现问题,sql,sql-server,stored-procedures,ranking,rank,Sql,Sql Server,Stored Procedures,Ranking,Rank,我有一个动态存储过程,它的开头是一个临时表的声明,然后是一个insert语句 这里有人能告诉我我需要如何调整下面的行,以便它根据groupCount desc而不是按Count创建一个排名吗 当我只说groupCount而不是Count时,它返回: 列名“groupCount”无效 所涉行: RANK() OVER(ORDER BY COUNT(*) desc, <sel>) [Rank], 我的程序第一部分: SET @sql = N' DECLARE @temp AS T

我有一个动态存储过程,它的开头是一个临时表的声明,然后是一个insert语句

这里有人能告诉我我需要如何调整下面的行,以便它根据groupCount desc而不是按Count创建一个排名吗

当我只说groupCount而不是Count时,它返回:

列名“groupCount”无效

所涉行:

RANK() OVER(ORDER BY COUNT(*) desc, <sel>) [Rank],
我的程序第一部分:

   SET @sql = N' DECLARE @temp AS TABLE
    (
                ranking int,
                item nvarchar(100),
                totalCount int,
                matchCount int,
                groupCount int,
                groupName nvarchar(100)
    )

    INSERT INTO @temp
    (
                ranking,
                item,
                totalCount,
                matchCount,
                groupCount,
                groupName
    )
    SELECT      RANK() OVER(ORDER BY COUNT(*) desc, <sel>) [Rank],
                <sel>,
                COUNT(*) AS totalCount,
                SUM(CASE WHEN suggestedAction = recommendation THEN 1 ELSE 0 END) AS matchCount,
                ROUND(100 * AVG(CASE WHEN suggestedAction = recommendation THEN 1.0 ELSE 0.0 END), 0) AS groupCount,
                ''currentMonth'' AS groupName
    FROM        LogEsc
    WHERE       dateEsc LIKE ''' + @date0 + '%''
    AND         EID LIKE ''PE%''
    GROUP BY    <sel>
    ORDER BY    groupCount desc, <sel>
        -- ...

提前非常感谢你在这方面的帮助,蒂姆

您不能使用别名

使用


谢谢,行得通!如果我想按降序排列,我可以在上面的末尾添加desc吗?@user2571510是的,您应该能够在后面添加desc,以便按降序排列。
ORDER BY ROUND(100 * AVG(CASE WHEN suggestedAction = recommendation THEN 1.0 ELSE 0.0 END), 0)