如何基于SQL查询结果的列值添加指定DRILL新行?
解决方案
可以通过UNION ALL将原查询结果与新增的DRILL记录合并,具体SQL代码如下:
-- 原查询(替换为你实际的查询语句) SELECT DSU, Pad, Task, Start, Finish FROM your_table WHERE Task IN ('Cond', 'Drill 3', 'Drill 2', 'Drill 1', 'Drill 4') UNION ALL -- 新增的DRILL记录 SELECT (SELECT DSU FROM your_table LIMIT 1) AS DSU, -- 取原表一致的DSU值 (SELECT Pad FROM your_table LIMIT 1) AS Pad, -- 取原表一致的Pad值 'DRILL' AS Task, '2022-06-17'::date AS Start, -- Drill 3的Start日期 '2022-11-23'::date AS Finish; -- Drill 4的Finish日期
关键说明:
- 用
UNION ALL而非UNION:无需去重操作,UNION ALL执行效率更高。 - 日期格式处理:将
6/17/22转换为SQL标准的YYYY-MM-DD格式,::date是PostgreSQL的类型转换语法,若使用MySQL可替换为STR_TO_DATE('6/17/22', '%m/%d/%y'),其他数据库可对应调整类型转换方式。 - DSU和Pad取值:如果原表中所有行的DSU、Pad值一致,用子查询取任意一行即可;若存在分组差异,可根据实际业务逻辑调整取值规则。
内容的提问来源于stack exchange,提问作者Jay Almendarez
相关产品推荐
相关产品推荐

