繁体   English   中英

在 where 子句中使用不同条件运行 SQL 查询两次 / oracle

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM