SELECT里别名的问题,求大神帮忙

zuoxxx 2016-06-08 05:25:23
我SELECT里有一列是用了CASE WHEN THEN



SELECT
CASE x WHEN xx THEN xxx WHEN xxxx THEN blabla ELSE blablabla END AS columnA,
CASE y WHEN yy THEM columnA+m WHEN yyy THEN columnA+n ELSE THEN columnA+** END

别名columnA的值,我还需要使用在第二个CASE WHEN THEN里进行运算,但是上面这样写不行。
我不想把第一个CASE WHEN THEN那么长一串写在第二个CASE WHEN THEN里,导致第二个太难读。。。

请问各位大神, 有什么更好的办法吗?
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2016-06-10
  • 打赏
  • 举报
回复

with t1 as
(select columnA=...
   from [表名]
),
t2 as
(select columnA,
            columnB=case when columnA....
   from t1
)
select * from t2

Dogfish 2016-06-09
  • 打赏
  • 举报
回复
没有什么好的方法了。或者使用table变量过渡一下,增加可读性。
卖水果的net 版主 2016-06-08
  • 打赏
  • 举报
回复
没什么好办法,只能这样写; 如果有多层引用的话,后面的代码几乎就没法看了。
zuoxxx 2016-06-08
  • 打赏
  • 举报
回复
引用 1 楼 zyl_leilei 的回复:
你可以写成子查询啊。
我计算得到的columnA用来再次计算得到columnB,columnB还要经过计算得到columnC的,最后还要比较columnB和columnC的值得到个columnD 所以如果使用子查询的话,会有很多层……。。 还有别的更好的办法吗???
zuoxxx 2016-06-08
  • 打赏
  • 举报
回复
引用 1 楼 zyl_leilei 的回复:
你可以写成子查询啊。

select  *,CASE y WHEN yy THEM columnA+m WHEN yyy THEN columnA+n ELSE THEN columnA+** end as columnB from
(
SELECTCASE x WHEN xx THEN xxx WHEN xxxx THEN blabla ELSE blablabla END AS columnA)
) as table1
是,子查询是可以的, 还有什么别的更好的办法吗?
-小蕾- 2016-06-08
  • 打赏
  • 举报
回复
你可以写成子查询啊。

select  *,CASE y WHEN yy THEM columnA+m WHEN yyy THEN columnA+n ELSE THEN columnA+** end as columnB from
(
SELECTCASE x WHEN xx THEN xxx WHEN xxxx THEN blabla ELSE blablabla END AS columnA)
) as table1

34,576

社区成员

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

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