sql - 一次将多个未来日期添加到 redshift SQL
问题描述
现在我有一个表格,详细信息如下:
Date Campaign Visits Orders Revenue
.... .... .... .... ....
Jun-18 Promotion01 10 1 120
假设它称为表 A 现在由于报告的目的,我想添加新的日期,如下所示
Date Campaign Visits Orders Revenue
Jul-18 NULL 0 0 0
Aug-18 NULL 0 0 0
Sep-18 NULL 0 0 0
.... .... .... .... ....
Dec-18 NULL 0 0 0
我想使用联合仅添加日期数据。
我使用以下命令在 Amazon redshift 中尝试了 dateadd 函数
SELECT
to_char(dateadd(month, 18, '01-01-2017'),'yyyy-MM') as plus30,
NULL,
0,
0,
0
它返回日期,但它只返回 1 行,即
Date Campaign Visits Orders Revenue
Jul-18 NULL 0 0 0
如果我想像之前显示的那样返回多行,除了 1 接 1 加入,那我该怎么办?非常感谢您的帮助!
解决方案
坦率地说,完成这类任务的最简单方法是制作 Excel 电子表格,填写所有所需的值,将其保存为 CSV,然后使用 COPY 将其加载到 Redshift。这为您提供了一个很好的界面来创建数据,而无需使用 SQL。
您只得到一行的原因是 SELECT 通常处理数据表,每行输入数据返回一个结果。您尚未指定表,因此它只返回一行。
幸运的是,您可以generate_series()
在某些情况下使用模拟数据:
SELECT
to_char(date '01-01-2017' + counter * interval '1 month','yyyy-MM') as plus30,
NULL,
0,
0,
0
FROM generate_series(1, 12) as counter
这会产生:
2017-02 (null) 0 0 0
2017-03 (null) 0 0 0
2017-04 (null) 0 0 0
2017-05 (null) 0 0 0
2017-06 (null) 0 0 0
2017-07 (null) 0 0 0
2017-08 (null) 0 0 0
2017-09 (null) 0 0 0
2017-10 (null) 0 0 0
2017-11 (null) 0 0 0
2017-12 (null) 0 0 0
2018-01 (null) 0 0 0
(您的问题显示yyyy-MM
在 SQL 中,但Mon-YY
在输出中,因此请进行相应调整。通常最好使用它,yyyy-MM
因为它很容易作为数字和字符串排序。)
推荐阅读
- html - 如何使 HTML 表单向电子邮件地址发送数据?
- python - Scrapy - 从 CSV 获取数据时获取 nan
- php - Laravel 6 Blade - 显示公共文件夹中的所有图像?
- mongodb - 根据 mongo 中的值定义键
- javascript - 为什么可写数组不能正确更新 Svelte 组件内的值?
- postgresql - postgres 段错误并返回 SQLSTATE 08006
- excel - 创建一个只在它使用的工作表中运行的自定义函数吗?
- python - 如何在python 3中实现异步函数
- javascript - javascript / mysql 不在结果对象中返回消息
- instagram - 无法邀请 Instagram 沙盒用户