【问题标题】:Not a group expression: troubleshooting an Oracle query不是组表达式:对 Oracle 查询进行故障排除
【发布时间】:2019-06-28 04:41:18
【问题描述】:

Oracle 查询 我有一个带有硬编码值“N/A”和其他字符值的列值。我需要编写一个选择查询来获取将另一组列分组的该列的最小值。但挑战是我需要用另一个字符“Abc”和 min 函数替换“N/A”的硬编码值

选项 1:nvl 不起作用,因为该值是硬编码的 选项 2:在 select 语句中解码以及解码列表中的 min 子句,以及 group by 子句与选择列表中使用的其他列
然而,得到一个错误

ORA-00979:不是组表达式。

例子:

Select a, b, decode(z,'N/A','abc',min(z)) 
  From table 1, table 2
 Where table 1.p=table2.q
 Group by a,b
Having c.table1 >= table2.d

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您应该在MIN 函数中使用DECODE,而不是相反。但是,我可能会在这里只使用一个 CASE 表达式:

    SELECT
        a,
        b,
        MIN(CASE WHEN z = 'N/A' THEN 'abc' ELSE z END) AS min_value
    FROM table1 t1
    INNER JOIN table2 t2
        ON t1.p = t2.q
    GROUP BY
        a,
        b;
    

    上面的CASE 表达式只是取每个组的最小值zMIN(z) 之间的唯一区别是如果值是N/A,它将被视为abc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-14
      • 2018-09-27
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2011-02-07
      • 2013-11-20
      相关资源
      最近更新 更多