注册 登录
编程论坛 SQL Server论坛

SQL虚拟字段问题。不能加条件

pchelp2008 发布于 2007-03-02 10:06, 1211 次点击

SELECT Sys_Corporation.ID, Sys_Corporation.last_Name, Sys_Corporation.email,
(3 * dbo.WordCount('h', Sys_Corporation.last_Name) + dbo.WordCount

('h', Sys_Corporation.email)) *
CASE

WHEN 'h' IS NULL THEN 1

ELSE 3 * dbo.WordCount('ggg', Sys_Corporation.last_Name) + dbo.WordCount('ggh',

Sys_Corporation.email)

END AS Rank

FROM Sys_Corporation where rank>0 ORDER BY Sys_Corporation.Rank

为什么我加了where rank>0 这个就说“列名 'rank' 无效。”呢............

9 回复
#2
棉花糖ONE2007-03-02 10:07
是运行的时候出问题的,编译没问题啊
#3
pchelp20082007-03-02 10:17

是出不来数据!

#4
pchelp20082007-03-02 10:23
这样 SELECT ID, '3+3' as rank
FROM Sys_Corporation where rank is not null也不行,是不是不能加条件呀
#5
棉花糖ONE2007-03-02 10:56
哦.这个是sql语句执行过程的问题,select的部分是在where之后执行的,所以找不到那个列
#6
pchelp20082007-03-02 10:57
那怎么办!
#7
棉花糖ONE2007-03-02 11:24
加个子查询
#8
pchelp20082007-03-02 11:41
怎么个加法呀,
#9
棉花糖ONE2007-03-02 11:59

select * from ( SELECT Sys_Corporation.ID, Sys_Corporation.last_Name, Sys_Corporation.email,
(3 * dbo.WordCount('h', Sys_Corporation.last_Name) + dbo.WordCount

('h', Sys_Corporation.email)) *
CASE

WHEN 'h' IS NULL THEN 1

ELSE 3 * dbo.WordCount('ggg', Sys_Corporation.last_Name) + dbo.WordCount('ggh',

Sys_Corporation.email)

END AS Rank

FROM Sys_Corporation where rank>0
) as b ORDER BY Rank 类似这样,自己去改改

#10
pchelp20082007-03-02 12:25
好的,谢谢版主
1