生成的列依赖于其他生成的列
这样做的最好方法是什么?
select 'blah' as foo,
CASE
WHEN foo='blah' THEN 'fizz'
ELSE 'buzz'
END as bar
正如现在所写的那样,我收到一个无效的列名'foo'
错误。无论如何,有没有办法在 select 语句可以用作视图的情况下执行此操作?
What would be the best way of doing this?
select 'blah' as foo,
CASE
WHEN foo='blah' THEN 'fizz'
ELSE 'buzz'
END as bar
As it is written right now I get an invalid column name 'foo'
error. Is there anyway to do this where the select statement could be used as a view?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您需要像这样使用嵌套选择:
问题是同一选择语句中的名称无法识别列 foo。
You need to use a nested select like this:
The problem is that the column foo is not recognized by the name in the same select statement.
如果您不想重复列定义,可以使用派生表。
或者 CTE
快速测试显示以下所有三个版本的执行计划都是相同的
You can use a derived table if you don't want to repeat the column definition.
Or a CTE
A quick test shows the execution plan for all three versions below are the same
您可以使用像这样的表查询:
You could possibly use a table query like so: