我有一个动态存储过程,它从temp表的声明开始,然后是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>
-- ...
蒂姆,非常感谢你提供任何帮助。
答案 0 :(得分:1)
您无法使用别名。
使用
ORDER BY ROUND(100 * AVG(CASE WHEN suggestedAction = recommendation THEN 1.0 ELSE 0.0 END), 0)