首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for:如果有一个匹配,那么将它们全部显示出来

for:如果有一个匹配,那么将它们全部显示出来
EN

Stack Overflow用户
提问于 2018-04-19 15:06:13
回答 2查看 557关注 0票数 0

我有以下情况:

我试图实现的是一个SQL-Standard语句,它为我提供了每一行"AAA“/ "BBB”,以及第4列中只有一个匹配项时的日期(按组排列)不是NULL。另一方面,如果有匹配,则在第4列中,对于每一行都没有一个是NULL。与之匹配的每一行都为空。

产出应是:

我希望我的意思是清楚的?

谢谢你们!

编辑:尝试过艾萨克斯的解决方案,并对我进行了一些编辑:

代码语言:javascript
复制
SELECT DISTINCT a.* FROM TABLE a
INNER JOIN
(
SELECT COL_1, COL_2 FROM TABLE WHERE COL_4 is null
) b ON a.COL_1 = b.COL_1 AND a.COL_2 = b.COL_2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-19 15:10:28

从你的编辑开始,我就删除了我以前的答案。我希望我把你的问题说对了。

代码语言:javascript
复制
select a.* from table a
join
(
    select col1, colb from table where col3 is null
 ) b on a.col1 = b.col1 and a.col2 = b.col2
票数 1
EN

Stack Overflow用户

发布于 2018-04-19 16:03:02

嗯。如果我正确理解,您可以使用窗口函数:

代码语言:javascript
复制
select col1, col2, col3, col4
from (select t.*,
             sum(case when col4 = 'XXX' then 1 else 0 end) over (partition by col1, col)
      from t
     ) t
where col4 is null or cnt = 1;

这将移除具有多个"XXX“列的col1/col2对。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49924388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档