首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle聚合查询

Oracle聚合查询
EN

Stack Overflow用户
提问于 2011-07-11 21:54:26
回答 1查看 73关注 0票数 0

ColA ColB ColC ColD

data1 rata1 T Test1 data1 rata3 F Test2 data1 rata2 T Test1 data2 rata1 T Test1 data2 rata3 T Test1 data3 T Test1 T rata4 T Test1 data3 T Test1 data3 T Test1 rata3 T Test1 data2 rata1 T Test1 data2 rata3 T Test1 data3

有四列类型的Varchar。我想确定的是:

  1. 对于ColB(rata1,rata2等)的每个唯一值,找到相应的ColA值和其他两列(ColC、ColD)的对应值,其中ColA的特定值的ColC值等于'T‘0或1倍。

代码语言:javascript
复制
rata2 data1 T Test1
rata3 data2 T Test1 
rata4 data3 T Test1

在上面的查询中,当

  1. 等于'T‘0或1次时,为ColB的特定值查找ColA有ColC等于'F’的其他行。

代码语言:javascript
复制
rata3 data1 F Test2  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-11 22:40:15

根本不明白你的问题。如果你说别的话,我会改正答案的。但就我所知你想要这样的东西?

编辑:--我创建了与您在DB中给我们的表相同的表。这个效果很好。试一试,告诉我它是否有效

代码语言:javascript
复制
SELECT COLUMNB,MAX(COLUMNA), MAX(ColumnC), MAX(COLUMND)
FROM DUMMY
WHERE ColumnC = 'T'
GROUP BY COLUMNB
HAVING SUM(CASE WHEN COLumnC = 'T' THEN 1 ELSE 0 END) <= 1

UNION ALL
SELECT * 
FROM  DUMMY
WHERE COLumnC = 'F'

编辑2:,这个怎么样?

代码语言:javascript
复制
WITH B
AS(
SELECT A.COLUMNB, MAX(A.COLUMNA) AS COLUMNA, MAX(A.ColumnC) AS COLUMNC, MAX(A.COLUMND) AS COLUMND
FROM DUMMY A
GROUP BY A.COLUMNB
HAVING SUM(CASE WHEN A.COLumnC = 'T' THEN 1 ELSE 0 END) <= 1)


SELECT * 
FROM B 

UNION ALL
SELECT D.COLUMNB, D.ColumnA, D.ColumnC, D.ColumnD
FROM B, DUMMY D
WHERE  B.ColumnB = D.COLUMNB
AND D.ColumnC = 'F'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6657128

复制
相关文章

相似问题

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