如何编写sql以便不必每天都运行查询?

问题描述 投票:0回答:1

我的仓库使用 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'
并让它自己运行。

sql join vertica
1个回答
0
投票

你尝试过明显的一个吗:

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' 

© www.soinside.com 2019 - 2024. All rights reserved.