Sql 基于另一列检索不同和公共列值的Oracle查询

Sql 基于另一列检索不同和公共列值的Oracle查询,sql,oracle,Sql,Oracle,我需要从STYPE列中检索不同的AHQ-WS1值,其中SCODE同时具有9531和9569 基本上是两个不同SCODE值的共同STYPE值,但也是不同的 是否可以仅使用查询或单独使用java代码?如果希望SCODE至少有一行具有9531值,并且至少有一行具有9569值,则: select stype from table group by stype having count(distinct case when scode in (9531,9569) then scode else null

我需要从STYPE列中检索不同的AHQ-WS1值,其中SCODE同时具有9531和9569

基本上是两个不同SCODE值的共同STYPE值,但也是不同的


是否可以仅使用查询或单独使用java代码?

如果希望
SCODE
至少有一行具有
9531
值,并且至少有一行具有
9569
值,则:

select stype from table
group by stype
having count(distinct case when scode in (9531,9569) then scode else null end) = 2
选择stype
从表\u名称
按stype分组
计数(9531时的情况scode,然后是1结束)>0
和计数(当9569时,则为1结束)>0
如果每种类型只需要一行,请使用:

选择stype
从表\u名称
按stype分组
有计数(9531时的情况scode然后是1 END)=1
和计数(9569时的情况scode然后是1 END)=1

如果希望
SCODE
至少有一行具有
9531
值,并且至少有一行具有
9569
值,则:

选择stype
从表\u名称
按stype分组
计数(9531时的情况scode,然后是1结束)>0
和计数(当9569时,则为1结束)>0
如果每种类型只需要一行,请使用:

选择stype
从表\u名称
按stype分组
有计数(9531时的情况scode然后是1 END)=1
和计数(9569时的情况scode然后是1 END)=1

这里的大多数人都希望样本表数据和预期结果是格式化文本(而不是图像)。“distinct”值在这种情况下是什么意思?您想要一行,其中只有一行
SCODE
9531
和一行
9569
(因此,如果恰好有两行
SCODE
9531
和一行
9569
,则您不希望返回该
STYPE
)?或者,您的意思是希望对输出进行聚合,以便它只返回一行,该行与
SCODE
s都匹配?或者其他什么?请将您的问题包含在一个选项中:表的DDL(
CREATE TABLE
)语句;示例数据的DML(
INSERT
)语句(不要将数据作为图像发布,因为我们无法复制/粘贴/执行它们);你的预期产出;解释为什么从数据中获得预期输出的逻辑。这-希望聚合输出,使其仅返回与两个SCODE匹配的单行。这里的大多数人希望示例表数据和预期结果为格式化文本(而不是图像)。“distinct”值在此上下文中是什么意思?您想要一行,其中只有一行
SCODE
9531
和一行
9569
(因此,如果恰好有两行
SCODE
9531
和一行
9569
,则您不希望返回该
STYPE
)?或者,您的意思是希望对输出进行聚合,以便它只返回一行,该行与
SCODE
s都匹配?或者其他什么?请将您的问题包含在一个选项中:表的DDL(
CREATE TABLE
)语句;示例数据的DML(
INSERT
)语句(不要将数据作为图像发布,因为我们无法复制/粘贴/执行它们);你的预期产出;解释为什么从数据中获得预期输出的逻辑。这-希望对输出进行聚合,以便只返回一行与两个SCODE匹配的数据。这很有效,非常好。还想知道count=2背后的逻辑是什么。请详细说明。是否基于查询参数的数量。案例部分确保仅统计(95319569)中的SCODE,distinct关键字使count函数返回找到的SCODE的不同数量。由于您需要同时具有两个scode的stype,因此必须使用count(distinct…=2),这非常好。还想知道count=2背后的逻辑是什么。请详细说明。是否基于查询参数的数量。案例部分确保仅统计(95319569)中的SCODE,distinct关键字使count函数返回找到的SCODE的不同数量。由于您需要同时具有两个SCODE的STYPE,因此必须使用count(distinct…=2行)按预期工作。谢谢按预期工作。