sqlserver 查询的别名无效
SELECTCOUNT(sex)ASsexNum,(sexNum/(SELECTCOUNT(USER)FROMTdiaocha)ASMyPercentFROMTdiaoc...
SELECT COUNT(sex) AS sexNum, (sexNum / (SELECT COUNT(USER) FROM Tdiaocha) AS MyPercent
FROM Tdiaocha
GROUP BY sex
ORDER BY sex
以上预计执行后,提示“列名 sexNum无效”,请高手指点一下? 展开
FROM Tdiaocha
GROUP BY sex
ORDER BY sex
以上预计执行后,提示“列名 sexNum无效”,请高手指点一下? 展开
1个回答
展开全部
SQLServer 不支持这样的别名
select t.sexNum,(t.sexNum + 0.0)/(SELECT COUNT(username) sexNum FROM Tdiaocha)*100 as MyPercent from ( SELECT COUNT(sex) sexNum FROM Tdiaocha GROUP BY sex) t
更多追问追答
追问
请问,高手。为什么不支持这样的别名呢,原理是怎样的?
而且为什么不加0.0,MyPercent显示为0,而不是0.5呢?
追答
本来 你的意图是 想统计 性别个数以及占比,那么就需要查询两次,一定要一个SQL语句的话,也是可以的,嵌套查询或者子查询完成。别名 顾名思义,仅代替某一字段或聚合函数后的,那么别称使用的范围仅仅在字段上和表中的字段,你告诉我 sexNum / (SELECT COUNT(USER) FROM Tdiaocha) 中的 sexNum 是什么? 数据库可不识别啊,要么你把它放置一个范围 内,然后再应用别称,示例:
select biecheng.sex from (select sex from Tdiaocha ) as biecheng
我故意加0.0的,就是担心你的也是整型类型,因为整型类型的数值相除, 直接去掉小数部分,如1/2 = 0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询