我的仓库使用 Vertica Enterprise。
我有三张桌子。
表 #1 - 学生
表 #2 - 学生地址
表 #3 - 学生当天完成的作业进度。 (注:部分学生当天可能缺席)。作业进度栏以%为单位。
所需输出
我希望表 3 中存在的所有日期以及表 1 中的所有学生以及表 2 中的地址位于一个表中。
这是我的尝试,但我必须每天运行查询。这意味着每次运行我都必须不断改变
c.day = '2023-11-01'
和 TO_DATE(TO_CHAR(20231101), 'YYYY-MM-DD') AS DAY_
。
INSERT INTO TABLE_4
SELECT
TO_DATE(TO_CHAR(20231101),'YYYY-MM-DD') AS DAY_,
A.ID AS ID,
A.NAME AS NAME,
B.ADDRESS AS ADDRESS,
NVL(C.HOMEWORK_PROGRESS,0.0) AS PROGRESS
FROM
STUDENTS AS A
INNER JOIN
ADDRESS AS B ON A.ID = B.ID
LEFT JOIN
HOMEWORK AS C ON A.ID = C.ID AND C.DAY = '2023-11-01'
我想重写它,这样我就可以做
C.DAY BETWEEN '2023-11-01' AND '2023-11-30'
并让它自己运行。
你尝试过明显的一个吗:
INSERT INTO TABLE_4
SELECT C.DAY AS DAY_
,A.ID AS ID
,A.NAME AS NAME
,B.ADDRESS AS ADDRESS
,NVL(C.HOMEWORK_PROGRESS,0.0) AS PROGRESS
FROM STUDENTS AS A
INNER JOIN ADDRESS AS B ON A.ID = B.ID
LEFT JOIN HOMEWORK AS C ON A.ID = C.ID
WHERE C.DAY BETWEEN '2023-11-01' AND '2023-11-30'
?