首页 > 解决方案 > 为查询的所有行重复一个输出列

问题描述

我在下面有我的代码

SELECT DISTINCT PCD.CHANGE_ID PARENT_CHANGE_ID, 
NULL as PARENT_TASK_ID,
ICD.CHANGE_ID INFRA_CHANGE_ID,
ICT.TASK_ID INFRA_TASK_ID,
WI.NOTES SERVER_COUNT
FROM 
V_ITSM_REPORT_CHANGE_DATA PCD
JOIN V_ITSM_REPORT_CHANGE_TASK PCT ON PCD.CHANGE_ID=PCT.CHANGE_ID
LEFT JOIN V_ITSM_REPORT_CHANGE_RELATIONS CR ON PCD.CHANGE_ID=CR.REQUEST_ID
LEFT JOIN V_ITSM_REPORT_CHANGE_DATA ICD ON ICD.CHANGE_ID=CR.CHANGE_ID
JOIN V_ITSM_REPORT_CHANGE_TASK ICT ON ICT.CHANGE_ID=ICD.CHANGE_ID
LEFT JOIN V_ITSM_REPORT_CHANGE_TASK_WI WI ON WI.TASK_ID = ICT.TASK_ID AND WI.SUMMARY='DBCPROVISIO'

输出如下 输出图像

我想在这里重复最后一列输出它 2 例如查询的所有行 输出图像 2

标签: sqloracle

解决方案


您可以使用FIRST_VALUE如下分析函数:

SELECT DISTINCT PCD.CHANGE_ID PARENT_CHANGE_ID, 
NULL as PARENT_TASK_ID,
ICD.CHANGE_ID INFRA_CHANGE_ID,
ICT.TASK_ID INFRA_TASK_ID,
-- Change are as following
CASE WHEN WI.NOTES = NULL THEN FIRST_VALUE(WI.NOTES) 
OVER (PARTITION BY PCD.CHANGE_ID ORDER BY WI.NOTESDESC NULLS LAST) 
ELSE WI.NOTES END AS SERVER_COUNT
FROM 
V_ITSM_REPORT_CHANGE_DATA PCD
JOIN V_ITSM_REPORT_CHANGE_TASK PCT ON PCD.CHANGE_ID=PCT.CHANGE_ID
LEFT JOIN V_ITSM_REPORT_CHANGE_RELATIONS CR ON PCD.CHANGE_ID=CR.REQUEST_ID
LEFT JOIN V_ITSM_REPORT_CHANGE_DATA ICD ON ICD.CHANGE_ID=CR.CHANGE_ID
JOIN V_ITSM_REPORT_CHANGE_TASK ICT ON ICT.CHANGE_ID=ICD.CHANGE_ID
LEFT JOIN V_ITSM_REPORT_CHANGE_TASK_WI WI ON WI.TASK_ID = ICT.TASK_ID AND WI.SUMMARY='DBCPROVISIO'

推荐阅读