SQL:创建一个额外的列,将最近 3 天的日期作为值

SQL: Create an extra column with last 3 days date as a value

我有一个 table(用户)有这些示例数据

user    location     name
111      usa          aaa
222      canada       bbb
333      usa          ccc
444      mexico       ddd
555      japan        eee

由此table,我想获得如下所示的最终输出

date               user    location     name
2020-11-03         111      usa          aaa
2020-11-03         222      canada       bbb
2020-11-03         333      usa          ccc
2020-11-03         444      mexico       ddd
2020-11-03         555      japan        eee
2020-11-02         111      usa          aaa
2020-11-02         222      canada       bbb
2020-11-02         333      usa          ccc
2020-11-02         444      mexico       ddd
2020-11-02         555      japan        eee
2020-11-01         111      usa          aaa
2020-11-01         222      canada       bbb
2020-11-01         333      usa          ccc
2020-11-01         444      mexico       ddd
2020-11-01         555      japan        eee

如果你看到上面的输出,对于每一天(过去 3 天),我看到 user,location,name 数据。

任何人都可以为此提出解决方案

你似乎想要一个 cross join:

select v.date, t.*
from t cross join
     (values ('2020-11-03'), ('2020-11-02'), ('2020-11-01')) v(date);

过去三天您可以轻松调整:

select current_date - v.n * interval '1 day', t.*
from t cross join
     (values (1), (2), (3)) v(n);