通过连接文本选择列作为 oracle 中的列名
我有一个表,其中的列以一天中的小时数命名,如下所示:
col00 NUMBER(5)
col01 NUMBER(5)
col02 NUMBER(5)
...
col23 NUMBER(5)
...我还有另一个查询,它返回按小时计数。
我想按小时恢复 colXX 值...然后我可以使用“解码”或“情况...”来恢复,但我想知道是否存在任何方法可以通过如下文本恢复列:
select "col"||hour from table;
在假设的情况下上面的例子如果小时是 13 那么会被翻译成这样:
select col13 from table;
有什么办法可以做到这一点吗?
I have a table with columns named with the number of hour of day like this:
col00 NUMBER(5)
col01 NUMBER(5)
col02 NUMBER(5)
...
col23 NUMBER(5)
...and I have another query that returns a count by hour.
I want to recover the colXX value by hour.... then I can recover with "decode" or "case when..." but I want know if exists any way to recover the column by a text like this:
select "col"||hour from table;
in the hypothetical above example if hour is 13 then would be translated like:
select col13 from table;
there is any way to do this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您必须使用动态 SQL:
参考:
You have to use dynamic SQL:
Reference:
关闭...
它并不那么简单,但非常灵活,对我来说非常有用。
Closing...
its not so simple but very flexible and works great for me.
虽然它看起来有点......蛮力......你可以在查询之间使用一堆 UNION 语句:
While it looks a little...brute force...you could use a bunch of UNION statements between queries: