加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – oracle:你能为from子句分配一个别名吗?

发布时间:2020-12-12 06:53:12 所属栏目:MsSql教程 来源:网络整理
导读:你能为from子句分配一个别名吗?喜欢: select a - b "Markup" from retail a,cost b; 编辑:抱歉,我输入的速度有点过快,并试图将问题简化到没有任何意义的地步 我真正想要做的是使用别名来比较同一个表中两个发布日期之间的月份.这是我发现的作品: select d
你能为from子句分配一个别名吗?喜欢:
select a - b "Markup" from retail a,cost b;

编辑:抱歉,我输入的速度有点过快,并试图将问题简化到没有任何意义的地步

我真正想要做的是使用别名来比较同一个表中两个发布日期之间的月份.这是我发现的作品:

select distinct to_char(months_between((select distinct pubdate
                                        from books3 
                                        where pubid = 2),(select distinct pubdate 
                                        from books3 
                                        where pubid = 4)),'99.99') "Answer"
                              from books3

我希望它看起来像这样:

select distinct months_between(a,b)
from (select distinct pubdate 
       from books3 
       where pubid = 2 as a),(select distinct pubdate 
      from books3 
      where pubid = 4 as b)

但这不起作用

解决方法

是的,Oracle支持表别名.它支持SELECT列表中的AS,但不支持FROM列表中的AS:
SELECT a.col - b.col AS markup
  FROM RETAIL a,COST b
 WHERE b.id = a.id

大多数数据库都支持省略AS关键字.

也就是说,表别名不是列别名 – 您仍然需要引用SELECT子句中相应表中的特定列,就像您在我的示例更新中看到的那样.我还添加了WHERE标准,因此查询不会返回笛卡尔积.

派生表/内联视图(AKA子查询,有时需要表别名,但我发现术语非常模糊):

SELECT x.col
  FROM (SELECT t.col,MAX(t.date)
          FROM TABLE t
      GROUP BY t.col) x

这是您的查询:

您的问题是您将表别名放在派生表中,当它需要在括号/括号之外时:

SELECT DISTINCT TO_CHAR(MONTHS_BETWEEN(x.pubdate,y.pubdate),'99.99') AS "Answer"
 FROM (SELECT DISTINCT a.pubdate FROM BOOKS3 a WHERE a.pubid = 2) x,(SELECT DISTINCT b.pubdate FROM BOOKS3 b WHERE b.pubid = 4) y

您需要独特的原因是因为笛卡尔积.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读