首页 > 解决方案 > 在窗口函数中为表格起别名?

问题描述

我正在尝试在窗口函数中为表起别名,但不确定我做错了什么,因为当我给它起别名时,它给出了无法解析列的错误

    SELECT e.city,
       e.time,
       e.day,
       e.id,
       m.id
FROM
  (SELECT *,
          rank() OVER (PARTITION BY e.id,
                                    e.bin
                       ORDER BY e.time ASC) rnk
   FROM table e
   JOIN table2 m 
   on m.id = e.id
   WHERE e.status = 'YES'
   AND e.day BETWEEN date '2019-05-06' and date '2019-05-08')
WHERE rnk = 1

标签: sqldata-sciencedata-analysispresto

解决方案


您在最外层使用了e别名select。但是,该别名的范围内没有任何内容。内部from不会像那样“伸出”(尽管范围确实“伸出”了另一种方式)。

所以:

SELECT e.city, e.time, e.day, e.id
FROM (SELECT e.*,
             rank() OVER (PARTITION BY e.id, e.bin ORDER BY e.time ASC) as rnk
      FROM table e
      WHERE e.status = 'YES' AND
            e.day BETWEEN date '2019-05-06' and date '2019-05-08'
     ) e
-------^ here
WHERE rnk = 1

推荐阅读