Sql 使用基于另一个datetime列的值添加datetime列

Sql 使用基于另一个datetime列的值添加datetime列,sql,pandas,google-bigquery,Sql,Pandas,Google Bigquery,我有一张桌子: | date | x | |------------+---| | 2020-09-09 | 1 | | 2020-09-09 | 2 | | 2020-10-10 | 3 | | 2020-10-10 | 4 | | 2020-10-10 | 5 | | 2020-11-11 | 6 | | 2020-11-11 | 7 | 使用SQL语言(BigQuery方言),我需要添加一列date\u today\u max,这样它可以复制date列中的所有数据,但对于最新

我有一张桌子:

|       date | x |
|------------+---|
| 2020-09-09 | 1 |
| 2020-09-09 | 2 |
| 2020-10-10 | 3 |
| 2020-10-10 | 4 |
| 2020-10-10 | 5 |
| 2020-11-11 | 6 |
| 2020-11-11 | 7 |
使用SQL语言(BigQuery方言),我需要添加一列
date\u today\u max
,这样它可以复制
date
列中的所有数据,但对于最新
日期的记录(意思是
max(date)
),它将用
当前日期替换日期:

|       date | date_today_max | x |
|------------+----------------+---|
| 2020-09-09 |     2020-09-09 | 1 |
| 2020-09-09 |     2020-09-09 | 2 |
| 2020-10-10 |     2020-10-10 | 3 |
| 2020-10-10 |     2020-10-10 | 4 |
| 2020-10-10 |     2020-10-10 | 5 |
| 2020-11-11 |     2020-11-15 | 6 |
| 2020-11-11 |     2020-11-15 | 7 |
使用Python+Pandas,我可以实现与

[23]中的
:从日期时间导入日期时间
在[24]中:导入熊猫作为pd
在[25]中:d=pd.日期范围(“2020-10-10”、“2020-10-15”,freq=“1d”)
在[26]中:df=pd.DataFrame(zip(d[1,2,3,4,5,6]),列=['date','x']
在[27]中:df['date\u today\u max']=df['date'].max(),datetime.now().replace(小时=0,分钟=0,秒=0,微秒=0))
In[28]:df
出[28]:
日期x日期\u今天\u最大值
0 2020-10-10  1     2020-10-10
1 2020-10-11  2     2020-10-11
2 2020-10-12  3     2020-10-12
3 2020-10-13  4     2020-10-13
4 2020-10-14  5     2020-10-14
5 2020-10-15  6     2020-11-15

但我不知道如何用SQL解决这个问题。有一个
replace
函数,但它只接受字符串作为参数。

我想您只需要一个带有窗口函数的
case
表达式:

select date, x,
       (case when date = max(date) over ()
             then current_date else date
        end) as date_today_max
from t;

请用英语解释逻辑。如果你愿意,代码很方便,但是人类的思想最好用人类的语言来表达。@GordonLinoff我很乐意这样做,但是,我缺少一整套词汇来正确描述这些问题,即使是这样一个基本的问题。也许你的书能帮我改变这一点:)。感谢您的帮助,您的解决方案非常有效!