2017-06-09 20 views
2

我将以下内容用作按预期工作的较大查询的一部分。将Select添加到选择中的Listagg的每一行

在我的情况下,一些出货单编号可以有多个商品编号,然后通过下面的编号进行汇总。

例如:
发货人编号有3个编号。
在这种情况下,以下将返回3个项目(包括它们的详细信息)和3个此货运单ID的总价格。

是否有任何方式我可以总结每个航运ID的总价格
假设上面例子中的总价格是10.00,20.00和30.00,那么我希望看到这个货运单ID为60.00的总数。
如果更容易,可以将其显示在单独的列中。

我尝试了多种方法,但无法使其正常工作。

我的查询:

SELECT 
    c.SHIPPER_ID AS Identnummer 
    , LISTAGG 
    (
     'ITEM NO.: ' || m.ITEM_NUMBER || 
     ' -nl-ARTICLE NAME: ' || a.ARTICLE_NAME || 
     ' -nl-NET PRICE: ' || m.NET_PRICE || 
     ' -nl-TAX: ' || NVL(m.TAX, 0) || 
     ' -nl-GROSS_PRICE: ' || (m.NET_PRICE + m.TAX), 
     ' -nl--nl-' 
    ) WITHIN GROUP (ORDER BY m.SHIPMENT_ID) AS Article 
FROM 
    myTable m 
/* ... */ 

回答

2

我缺少的东西?你会只使用SUM()

select . . ., 
     listagg(. . .), 
     sum(m.NET_PRICE + m.TAX) as total_gross_price 
+0

谢谢,戈登。也许我没有很好地描述它。假设我有100个发货人ID。然后他们中的一些人只有一件物品,所以这里这个货运人ID的总金额与该物品的总价相同。但是,如果发件人ID有多个项目,那么我需要计算他们的总和,在我想的列表中。您的方法不起作用,因为listag以外没有总价。我看错了吗? – keewee279

+1

@ keewee279。 。 。你有组件值,所以你可以把这个表达式放在'SUM()'中。 –

+0

谢谢。对不起,我是Oracle新手。因此,如果货运单ID有多个净价格和税金,这也可以起作用。 – keewee279

相关问题