我試圖撰寫一個SQL查詢,根據數值是負數還是正數,回傳每個客戶發貨的零件編號之和的唯一行。例如:
如果我們向客戶A運送了20個Z部件兩次,而他們向我們退回了6個部件,它將顯示:
----------------- ------------- ---------
| Customer_Number | Part_Number | Shished |
----------------- ------------- ---------
| A | Z | 20 |
| A | Z| 20 |
| A | Z | 6 |
----------------- ------------- ---------
運行查詢后,預期結果:
----------------- ------------- ---------
| Customer_Number | Part_Number | Shished |
----------------- ------------- ---------
| A | Z| 40 |
| A | Z | 6 |
----------------- ------------- ---------
我想出的查詢是:
SELECT
客戶號碼。
零件號碼。
CASE[/span
WHEN Ship_Quantity > 0 THEN SUM(Ship_Quantity))
WHEN Ship_Quantity < 0 THEN SUM(船舶數量)。
結束。
FROM Sales_Line
GROUPBY
客戶編號。
零件號碼
但是我得到了錯誤:
列是無效的。必須是一個group by列。Ship_Quantity in SELECT LIST.
當我把 "Ship_Quantity "加入我的GROUP BY時,它沒有給出準確的結果:
原始輸入: ----------------- --------------- ---------
| Customer_Number | Part_Number | Shished |
----------------- --------------- ---------
| A080 | C76 | 11.0 |
| A080 | C76 | -1.0 |
| A080 | C76 | 2.0 |
| A080 | C76 | -1.0 |
| A080 | C76 | -1.0 |
| A080 | C76 | 21.0 |
| A080 | C76 | 79.0 |
| A080 | C76 | 1.0 |
| A080 | C76 | 11.0 |
| A080 | C76 | 99.0 |
| A045 | X150 | 6.0 |
| A045 | X150 | 1.0 |
| A045 | X150 | 11.0 |
| A045 | X150 | 2.0 |
| A045 | X150 | 1.0 |
| A045 | X150 | -1.0 |
| A045 | X150 | -1.0 |
| A045 | X150 | 373.0 |
| A045 | X150 | 12.0 |
| A045 | X150 | 1.0 |
| A045 | X150 | 300.0 |
| A045 | X150 | 146.0 |
| A045 | X150 | 150.0 |
| A045 | X150 | 150.0 |
| A045 | X150 | 200.0 |
| A045 | X150 | 150.0 |
| A045 | X150 | 150.0 |
----------------- --------------- ---------
查詢后:
----------------- --------------- ---------
| Customer_Number | Part_Number | Shatched |
----------------- --------------- ---------
| A045 | X150 | 300.0 |
| A045 | X150 | 373.0 |
| A080 | C76 | 11.0 |
| A080 | C76 | 2.0 |
| A080 | C76 | 3.0 |
----------------- --------------- ---------
我將如何去做?
我將如何去做?
uj5u.com熱心網友回復:
在GROUP BY子句中使用函式SIGN():
SELECT Customer_Number, Part_Number,
SUM(Shipped) Shipped
FROM Sales_Line
GROUP BY Customer_Number, Part_Number, SIGN(Shipped)
如果你的資料庫不支持函式SIGN(),使用CASE表達:
SELECT Customer_Number, Part_Number,
SUM(Shipped) Shipped
FROM Sales_Line
GROUP BY Customer_Number, Part_Number,
CASE WHEN Shipped < 0 THEN 1 ELSE 1 END
請看demo。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322154.html
標籤:
下一篇:如何訪問特定實體的屬性
