如何检查该组在Oracle中是否有值?

时间:2012-08-09 14:43:18

标签: oracle group-by

例如,我有一个类似

的表格
values
10
20
30
40

在这张桌子上的情况我有这样的GROUP BY:

SELECT ???
FROM tbl 
GROUP BY values

我需要检查该组是否有某些值,例如30

UPD: 在实际任务中,a有一个包含许多列和其他操作的表,在一列中我需要检查该列的每个组中是否有值。

UPD2: 我需要这样的东西:

select 
min(created_timestamp),
max(resource_id),
max(price),
CASE WHEN event_type has (1704 or 1701 or 1703) THEN return found value END
CASE WHEN event_type has (1707) THEN return 1707 END
from subscriptions
group by guid

3 个答案:

答案 0 :(得分:2)

SELECT
    MIN(created_timestamp),
    MAX(resource_id),
    MAX(price),
    MIN(CASE WHEN event_type IN (1704, 1701, 1703) 
                 THEN found_value 
             WHEN event_type = 1707 
                 THEN 1707 
                 ELSE NULL 
        END)
FROM subscriptions
GROUP BY guid ;

答案 1 :(得分:0)

我没有得到你在select子句中拥有的东西..但是如果你想通过查询运行组时也看到输出中的值,试试这个

选择函数(),来自tbl group的值按值

function() - 可以是任何函数,如 - count或sum

如果你只想要特定于值30 ..那么添加一个where子句值= 30。

答案 2 :(得分:0)

如果您的目的是查找是否存在某个值,则不需要使用group by子句。 如果您还考虑了性能,请使用此方法。

SELECT DECODE (COUNT(1),0,'Not Exist','Yes has some values')
FROM dual
WHERE EXISTS ( SELECT 1
               FROM tbl
               WHERE VALUES='&Your_Value_To_Check'
               )