[英]Running SQL query twice with different conditions in where clause / oracle
我需要在 WHERE 子句中使用不同的条件运行相同的查询两次。
1.
insert into t1
select sum(q) from t2
where t2.n in (select * from t3);
insert into t1
select sum(q) from t2
where t2.n NOT in (select * from t3);
t3 是这里的 1 列表。 结果应该是 t1 中的 2 行。
我在考虑使用循环和参数,但似乎无法弄清楚确切的方法。
任何帮助,将不胜感激。
我建议使用 case 语句有条件地对行进行分组。
insert into t1
select sum(q) from t2
group by CASE WHEN t2.n in (select * from t3) THEN 1 ELSE 0 END
我认为您不想为组总和也插入某种 label 是令人惊讶的。 我会做这样的事情:
select sum(q),
CASE WHEN t2.n in (select * from t3) THEN 'IN' ELSE 'NOT IN' END as label
from t2
group by CASE WHEN t2.n in (select * from t3) THEN 'IN' ELSE 'NOT IN' END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.