Sql BigQuery,如何在where子句中使用别名?
我有一个小查询,BigQuery不识别别名maxdate,我试图返回表,但只返回最后一个日期Sql BigQuery,如何在where子句中使用别名?,sql,google-bigquery,Sql,Google Bigquery,我有一个小查询,BigQuery不识别别名maxdate,我试图返回表,但只返回最后一个日期 WITH maxdate AS ( SELECT MAX(DATE(SETTLEMENTDATE)) FROM `biengine-252003.aemo2.daily`) SELECT * FROM `biengine-252003.aemo2.daily` WHERE DATE(SETTLEMENTDATE)= maxdate 您正试图从表maxdate中获
WITH
maxdate AS (
SELECT
MAX(DATE(SETTLEMENTDATE))
FROM
`biengine-252003.aemo2.daily`)
SELECT
*
FROM
`biengine-252003.aemo2.daily`
WHERE
DATE(SETTLEMENTDATE)= maxdate
您正试图从表
maxdate
中获取maxdate
的值。向列中添加别名并使用它
WITH
maxdate AS (
SELECT
MAX(DATE(SETTLEMENTDATE)) as mx
FROM
`biengine-252003.aemo2.daily`)
SELECT
*
FROM
`biengine-252003.aemo2.daily`
WHERE
DATE(SETTLEMENTDATE) = (SELECT mx FROM maxdate LIMIT 1)
我想把桌子还回去,但只是最后一天
同时,实现这一目标的更有效途径是
#standardSQL
SELECT * EXCEPT(isLastDate)
FROM (
SELECT *, DATE(SETTLEMENTDATE) = MAX(DATE(SETTLEMENTDATE)) OVER() isLastDate
FROM `biengine-252003.aemo2.daily`
)
WHERE isLastDate
您还可以执行以下操作:
with maxdate as (
select
max(date(SETTLEMENTDATE)) as mx
from
`biengine-252003.aemo2.daily`
)
select
d.*
from `biengine-252003.aemo2.daily` d
left join maxdate on 1=1
where date(d.SETTLEMENTDATE) = maxdate.mx
奇怪的结算日期是一个分区表,还是BigQuery扫描整个表?你最近的更新改变了你的问题很多!如果你有新问题-你应该把它作为新问题发布!这让您有更好的机会得到答案,同时您尊重那些已经回答了您最初问题的人所做的努力:o)会做的,我的道歉,没问题:o)我添加了一个单独的问题,请参阅更新的问题,该问题询问如何修剪分区以获得较小的扫描。