首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Group by issue

Oracle Group by issue
EN

Stack Overflow用户
提问于 2011-03-04 08:42:10
回答 2查看 163关注 0票数 0

我有下面的问题。问题是最后一列productdesc返回了两条记录,查询因distinct而失败。现在,我需要在select查询的where子句中再添加一列,以便返回一条记录。问题是我需要添加的列不应该是group by子句的一部分。

代码语言:javascript
复制
  SELECT product_billing_id,
         billing_ele,
         SUM(round(summary_net_amt_excl_gst/100)) gross,
         (SELECT DISTINCT description 
            FROM RES.tariff_nt 
           WHERE product_billing_id = aa.product_billing_id 
             AND billing_ele = aa.billing_ele) productdescr
    FROM bil.bill_sum aa
   WHERE file_id = 38613 --1=1
     AND line_type = 'D'
     AND (product_billing_id, billing_ele) IN (SELECT DISTINCT 
                                                    product_billing_id, 
                                                    billing_ele 
                                               FROM bil.bill_l2 )
     AND trans_type_desc <> 'Change'
GROUP BY product_billing_id, billing_ele

我想通过在where子句中添加一个新的筛选器来修改select语句,使其返回一条记录。

代码语言:javascript
复制
(SELECT DISTINCT description 
   FROM RRES.tariff_nt 
  WHERE product_billing_id = aa.product_billing_id 
    AND billing_ele = aa.billing_ele
    AND (rate_structure_start_date <= TO_DATE(aa.p_effective_date,'yyyymmdd') 
    AND rate_structure_end_date > TO_DATE(aa.p_effective_date,'yyyymmdd'))
) productdescr

aa.p_effective_date不应是GROUP BY子句的一部分。我该怎么做呢?Oracle是数据库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-04 09:42:24

因此,给定的product_ RES.tariff _id/billing_ele有多个计费记录,通过开始/结束日期进行区分

您需要包含来自bil.bill_sum的“p_effective_date”的记录的描述。关键是您不能(或不想)将其包含在group by中。这表明您在bil.bill_sum中有多个具有不同生效日期的行。

问题是,如果您要汇总具有不同日期的多行,您希望发生什么情况。您希望使用这些日期中的哪一个作为获取描述的日期。

如果没有关系,只需使用MIN(aa.p_effective_date)或MAX即可。

票数 3
EN

Stack Overflow用户

发布于 2011-03-04 08:45:01

你有没有研究过Oracle分析函数。这是一个很好的链接Analytical Functions by Example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5188421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档