Oracle sql语句,如何为当前情况创建好的语句?
我有一张像这样的桌子Oracle sql语句,如何为当前情况创建好的语句?,oracle,Oracle,我有一张像这样的桌子 |id|name|problem| 1 A1 Good 2 A2 Bad 1 A1 Good 2 A2 Good 我希望从这个表中得到的是,对于唯一id和名称,我们可能会遇到不同的问题 如果例如A1=适用于所有情况,我需要返回1 A1 Good 如果我有A2=Good和A2=Bad,我需要返回2个A2=Bad 预期的结果应该是 |id|name|problem| 1 A1 Good 2 A2 Bad 谢谢你的帮
|id|name|problem|
1 A1 Good
2 A2 Bad
1 A1 Good
2 A2 Good
我希望从这个表中得到的是,对于唯一id和名称,我们可能会遇到不同的问题
如果例如A1=适用于所有情况,我需要返回1 A1 Good
如果我有A2=Good和A2=Bad,我需要返回2个A2=Bad
预期的结果应该是
|id|name|problem|
1 A1 Good
2 A2 Bad
谢谢你的帮助
加:
所以我想我找到了解决方案,看起来很简单:
select T.id,T.name,min(T.problem) from table T group by T.id,T.name
感谢所有试图帮助我的人。类似这样的事情,尽管我不能100%确定我理解这个问题
select id,
name,
case
when total_count = good_count then 'Good'
else 'Bad'
end as problem
from (
select id,
name,
count(*) as total_count,
case (when problem = 'Good' then 1 end) as good_count
from the_table
group by id, name
)
这将统计每个id/名称组合的总项目数,并统计好项目数。如果总计数等于good count,则good将显示为“Bad”因此,需要为A2返回Bad,当表中的两个值中有一个为Bad时。如果A2的两个值都是好的,那么A2的返回值应该是好的。对吗?你能再读一遍你的问题并确认它足够清楚吗?您解释的内容和发布的预期输出内容不太清楚。@realspirituals什么内容不太清楚?A1=适用于所有情况,然后重新运行A1=良好,如果不适用,返回什么内容?也A2=好,也A2=坏返回A2=坏,如果不是???如果我有两行A1=坏,A1=好,结果应该是A1-坏。如果A1良好,A1良好结果应为A1良好。