sql - 为查询的所有行重复一个输出列
问题描述
我在下面有我的代码
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'
解决方案
您可以使用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'
推荐阅读
- imagemagick - 我想从一个 svg 文件创建多个调整大小的 png。我想使用 Imagemagick
- python - 如何使用 Python 在 selenium webdriver 中触发 keyupevent?
- arrays - 将所有值注入数组后如何从数组中提取值?
- javascript - 悬停效果在画布 HTML5 内的路径上
- android - INSTALL_FAILED_UPDATE_INCOMPATIBLE:包 com.beeclear.english 签名与之前安装的版本不匹配
- c++ - 如何访问指向指针向量的指针向量数组中的转发列表以转发指向对象的指针列表?
- c++ - (C++) 我似乎无法多次运行我的 for 循环。难道我做错了什么?
- docker - Docker 停止响应并出现错误“超出上下文期限”
- mysql - mysql join没有返回所需的结果
- algorithm - Hackerrank 上组织球容器问题的解决方案逻辑