SQL Exchange Null具有其他行值
我是SQL的新手,我正在为VISW_FEATURE_COUNTRY和JOIN_COUNTRY列中的零值问题提供解决方案。 我希望该单元格从最近的日期(同一天,前一天或之后的同一天)获取非零值,而不是零值。 我已经附加了当前的结果和预期的结果屏幕截图。
CREATE VOLATILE TABLE new_base_count AS
(SELECT COALESCE(visw.employeemail, vnotw.employeemail) AS visw_employeemail
,COALESCE(visw.completed_at, vnotw.completed_at) AS visw_completed_at
,CASE WHEN visw.feature_country IN ('UK', 'UK/IE', 'AU') THEN 'UK'
ELSE visw.feature_country END AS visw_feature_country
,CASE WHEN visw_feature_country IN ('UK', 'UK/IE', 'AU') THEN 'UK'
ELSE visw_feature_country END AS join_country
FROM new_visw visw
FULL OUTER JOIN new_vnotw vnotw
ON visw.employeemail = vnotw.employeemail AND
visw.completed_at = vnotw.completed_at
AND visw.feature_country = vnotw.feature_country
FULL OUTER JOIN new_vwonly vwo
ON (visw.employeemail = vwo.employee_email OR vnotw.employeemail = vwo.employee_email)
AND (visw.completed_at = vwo.completed_at OR vnotw.completed_at = vwo.completed_at)
AND (visw.feature_country = vwo.feature_country OR vnotw.feature_country = vwo.feature_country)
GROUP BY 1,2,3,4) WITH DATA ON COMMIT PRESERVE ROWS;
当前结果:
预期结果:
I'm pretty new to SQL and I'm looking for a solution to a NULL values problem in a visw_feature_country and join_country columns.
Instead of NULL values I would like the cell to take non-null value from the nearest date (the same day, day prior or day after) for the same email.
I've attached the current result and the expected result screenshots.
CREATE VOLATILE TABLE new_base_count AS
(SELECT COALESCE(visw.employeemail, vnotw.employeemail) AS visw_employeemail
,COALESCE(visw.completed_at, vnotw.completed_at) AS visw_completed_at
,CASE WHEN visw.feature_country IN ('UK', 'UK/IE', 'AU') THEN 'UK'
ELSE visw.feature_country END AS visw_feature_country
,CASE WHEN visw_feature_country IN ('UK', 'UK/IE', 'AU') THEN 'UK'
ELSE visw_feature_country END AS join_country
FROM new_visw visw
FULL OUTER JOIN new_vnotw vnotw
ON visw.employeemail = vnotw.employeemail AND
visw.completed_at = vnotw.completed_at
AND visw.feature_country = vnotw.feature_country
FULL OUTER JOIN new_vwonly vwo
ON (visw.employeemail = vwo.employee_email OR vnotw.employeemail = vwo.employee_email)
AND (visw.completed_at = vwo.completed_at OR vnotw.completed_at = vwo.completed_at)
AND (visw.feature_country = vwo.feature_country OR vnotw.feature_country = vwo.feature_country)
GROUP BY 1,2,3,4) WITH DATA ON COMMIT PRESERVE ROWS;
Current result:
Expected result:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试last_value:
类似于join_country
Try LAST_VALUE:
Similar for join_country