以下查詢爲我提供了我需要的信息,但我希望它只是更進一步。在底部的表格中(只顯示字段的子集),我想按cust_line以不尋常的方式進行分組(至少在我看來這是不常見的)。一個將聚合值和非聚合值組合在一行中的SQL查詢
我們來看一下cust_line爲2的項目爲例。我希望這些代碼不是5行。對於這一行,我想選擇除cust_part =「GROUPINVC」之外的價格字段以外的所有字段。對於總字段,我希望它是'total(total)as new_total',對於價格,我希望它是new_total/qty_invoiced,其中qty_invoiced是cust_part =「GROUPINV」行上的值。
我要求的是完全荒謬的嗎?它甚至有可能嗎?我在SQL上並不先進,所以它可能也很容易,我只是不知道如何處理它。我想使用'分區',但我無法想象如何得到它的工作,因爲我認爲它仍然會返回5行,我只想要1 1.
我也看過類似的問題冠軍,但不是真的是我要找:
SQL query that returns aggregate AND non aggregate results
Combined aggregated and non-aggregate query in SQL
SELECT L.CUST_LINE, I.LINE_NO, I.ORDER_NO, I.STAGE, I.ORDER_LINE_POS, I.CUST_PART,
I.LINE_ITEM_NO, I.QTY_INVOICED, I.CUST_DESC, I.DESCRIPTION, I.SALE_UNIT_PRICE, I.PRICE_TOTAL,
I.INVOICE_NO, I.CUSTOMER_PO_NO, I.ORDER_NO, I.CUSTOMER_NO, I.CATALOG_DESC, I.ORDER_LINE_NOTES
FROM
(SELECT CUST_LINE, ORDER_NO, LINE_NO
FROM CUSTOMER_ORDER_LINE
GROUP BY CUST_LINE, ORDER_NO, LINE_NO
) L
INNER JOIN CUSTOMER_ORDER_IVC_REP I
ON I.ORDER_NO = L.ORDER_NO
WHERE RESULT_KEY = 999999
AND I.LINE_NO = L.LINE_NO
ORDER BY L.CUST_LINE;
| cust_line | line_no | cust_part | qty_invoiced | cust_desc | price | total |
| 1 | 4 | ... | 1 | ... | 55 | 55 |
| 2 | 1 | GROUPINV | 1 | some part | 0 | 0 |
| 2 | 6 | ... | 3 | ... | 0 | 0 |
| 2 | 2 | ... | 1 | ... | 0 | 0 |
| 2 | 3 | ... | 1 | ... | 0 | 0 |
| 2 | 7 | ... | 2 | ... | 10 | 20 |
| 3 | 7 | ... | 1 | ... | 67 | 67 |
在你的問題中沒有PL/SQL –
我使用的是Oracle數據庫,所以我認爲這可能會以某種方式來解決問題。 – jaromey
爲什麼你認爲你需要一個存儲過程? –