1

例如,我有一个表 tbl

values
10
20
30
40

在这张桌子上,我有这样的 GROUP BY 条件:

SELECT ???
FROM tbl 
GROUP BY values

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

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

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
4

3 回答 3

3
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 ;
于 2012-08-10T08:50:57.300 回答
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'
               )
于 2012-08-09T15:00:54.000 回答
0

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

select function(), values from tbl group by values

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

如果您只想特定于值 30 .. 然后添加 where 子句值 = 30。

于 2012-08-09T14:49:54.080 回答