【发布时间】:2021-05-19 02:16:45
【问题描述】:
我正在尝试将两个表附加在一起,它们没有完全相同的列,但包含相同客户端的数据。 "结果"表包含1个月内收集的客户调查结果,"检查点"表包含6个月后收集的客户调查结果。我尝试附加这两个表,并通过引入 NULL 列来确保列数相同,以便两个表中的列数匹配这是我的查询:
tbl_out AS (
SELECT
PRG_NAME,
CASEREFERENCE,
STARTDATE,
STATUS,
ENDDATE,
LASTWRITTEN,
CLOSURE_REASON,
--these columns were made to match the tbl_check table--
TO_CHAR(NULL) AS Reviewer,
TO_DATE(NULL) AS Month_Schedule_Date,
TO_CHAR(NULL) AS Month_REASON,
TO_DATE(NULL) AS Month_Start_Date,
TO_DATE(NULL) AS Month_End_Date,
TO_CHAR(NULL) AS MONTH_Resubmit_MILESTONE,
TO_CHAR(NULL) AS MONTH_MILESTONE_ACHIEVED,
TO_DATE(NULL) AS MONTH_APPROVED_DATE,
--at 1 month--
OUTCOME_DATE,
Outcome_Reference_ID,
Outcome_EMP_SITUATION,
Outcome_Work_Job_Business,
Outcome_Employment_Type,
Outcome_NUM_JOBS,
Outcome_NAICS,
Outcome_NAICS_Desc,
Outcome_NOC,
Outcome_NOC_Desc,
Outcome_JOB_Nature,
TO_NUMBER(Outcome_WORK_HOURS),
TO_NUMBER(Outcome_WAGE),
Outcome_Change_Employment,
TO_NUMBER(Outcome_NUM_EMP_Change),
Outcome_LAST_UNEMP_DATE,
Outcome_Attend_School,
Outcome_STUDENT_STATUS,
Outcome_STUDENT_Type,
Outcome_EMP_CATEGORIES,
Outcome_Got_Service,
Outcome_Right_Service,
Outcome_Seek_Help_Again,
Outcome_Recommend_Program,
Outcome_Didnot_Seek_Employment
FROM outcome
),
tbl_check AS (
SELECT
PRG_NAME,
CASEREFERENCE,
STARTDATE,
STATUS,
ENDDATE,
LASTWRITTEN,
CLOSURE_REASON,
--info from tbl_out--
TO_DATE(NULL) AS OUTCOME_DATE,
--at 6 months--
TO_CHAR(Reviewer),
TO_DATE(Month_Schedule_Date),
TO_CHAR(Month_REASON),
TO_DATE(Month_Start_Date),
TO_DATE(Month_End_Date),
month_Review_Reference_ID,
month_outcome AS MONTH_EMP_SITUATION,
Month_Work_Job_Business,
Month_Outcome_Employment_Type,
month_NUM_JOBS,
month_NAICS,
Month_NAICS_Desc,
MONTH_NOC,
Month_NOC_Desc,
Month_JOB_Nature,
TO_NUMBER(MONTH_WORK_HOURS),
TO_NUMBER(MONTH_WAGE),
Month_Change_Employment,
TO_NUMBER(Month_NUM_EMP_Change),
MONTH_LAST_UNEMP_DATE,
Month_Attend_School,
Month_STUDENT_STATUS,
Month_STUDENT_Type,
Month_EMP_CATEGORIES,
Month_Got_Service,
Month_Right_Service,
Month_Seek_Help_Again,
Month_Recommend_Program,
Month_Didnot_Seek_Employment,
TO_CHAR(MONTH_Resubmit_MILESTONE),
TO_CHAR(MONTH_MILESTONE_ACHIEVED),
TO_DATE(MONTH_APPROVED_DATE)
FROM checkpoint
)
SELECT * FROM tbl_out
UNION
SELECT * FROM tbl_check
我想知道是否有人可以告诉我如何修复我的查询以使查询正常运行?谢谢
【问题讨论】:
-
您的两个 CTE 中的列的顺序不同。例如,在第一个中,Reviewer 是第 8 列。在第二个中,它是第 9 列。这导致不同的数据类型处于匹配位置,而不仅仅是看起来不匹配的数据。重新排列一个或两个 CTE 中的列,使其正确对齐。
-
非常感谢!它工作:)
标签: oracle