基于flag对行进行分组,以单行作为输出

时间:2018-04-17 19:35:38

标签: sql oracle

我在oracle 10g中有一个如下表。

**Pat_no   pat_id   doc    doc_flag**
A1         123      ABD     Y
A1         123      ABC     Y
A1         123      ABE     Y
A1         123      ABF     Y

当所有不同的文档都有标记' Y'时,我想要单行输出。

**Pat_no    pat_id  doc_flag**
A1          123     Y

如果任何人的doc_flag为' N'然后输出应该是N'

**Pat_no    pat_id  doc_flag**
A1          123     N

我该怎么做?

3 个答案:

答案 0 :(得分:2)

我认为你正在寻找

select pat_no, pat_id, min(doc_flag) doc_flag
  from t
 group by pat_no, pat_id

答案 1 :(得分:0)

这就是你想要的:

select pat_no, pat_id, 'Y'
from t
group by pat_no, pat_id
having min(doc_flag) = max(doc_flag) and min(doc_flag) = 'Y';

答案 2 :(得分:0)

您可以将CASE聚合功能与SELECT pat_no, pat_id, CASE WHEN COUNT( CASE doc_flag WHEN 'N' THEN 1 END ) > 0 THEN 'N' ELSE 'Y' END AS doc_flag FROM your_table GROUP BY pat_no, pat_id

一起使用
cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u161|JAVA_VERSION=8u171|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ="6dbc56a0e3310b69e91bb64db63a485bd7b6a8083f08e48047276380a0e2021e"|SHA256SUM_TGZ="b6dd2837efaaec4109b36cfbb94a774db100029f98b0d78be68c27bec0275982"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_161|J_DIR=jdk1.8.0_171|' oracle-java8-installer.*
相关问题