Sql 根据标志对行进行分组,并将一行作为输出
在oracle 10g中,我有一个如下所示的表Sql 根据标志对行进行分组,并将一行作为输出,sql,oracle,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
**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_标志为“N”,则输出应为“N”
**Pat_no pat_id doc_flag**
A1 123 N
我该怎么做?这就是您想要的:
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';
这就是你想要的吗:
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';
我想你在找我
select pat_no, pat_id, min(doc_flag) doc_flag
from t
group by pat_no, pat_id
我想你在找我
select pat_no, pat_id, min(doc_flag) doc_flag
from t
group by pat_no, pat_id
您可以将
COUNT
聚合功能与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
您可以将
COUNT
聚合功能与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