计算列如何成为where字句的条件?

wallis 2012-03-29 04:38:02
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb from test where bb=‘1’
这样sqlserver会报错无效的列

请指点下
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2012-03-29
  • 打赏
  • 举报
回复
--你这样的查询貌似没有用,不如直接:
select '1' as bb from test where aa = 1

--如果想对这个计算列做运算,可如下:
--1.用子查询
select * from
(
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb from test
) t
where bb = ...

--2.在条件中把计算列再写一次:
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb from test
where (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) = ...
xuam 2012-03-29
  • 打赏
  • 举报
回复
select *  from 
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb
where bb='1'
Felixzhaowenzhong 2012-03-29
  • 打赏
  • 举报
回复

select * from (
select case aa when 1 then '1' when 2 then '2' when 3 then '3' else ''end as bb from test
)a where bb='1'

billpu 2012-03-29
  • 打赏
  • 举报
回复
select * from (select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb from test) c where bb=‘1’
xuam 2012-03-29
  • 打赏
  • 举报
回复
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb from test where (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) =‘1’
dawugui 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb from test where bb=‘1’
这样sqlserver会报错无效的列

请指点下
[/Quote]

你这样的查询貌似没有用,不如直接:

select '1' as bb from test where aa = 1
黄_瓜 2012-03-29
  • 打赏
  • 举报
回复
select (case aa when 1 then '1' when 2 then '2' when 3 then '3' end) as bb
from test
where (case aa when 1 then '1' when 2 then '2' when 3 then '3' end)='1'

这样
billpu 2012-03-29
  • 打赏
  • 举报
回复
外面套一个

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧