如果行中的初始值在 SQL 中为 < 或 > 0,如何返回单独的列总和

传奇xv2

我正在尝试编写一个 SQL 查询,该查询将根据值是负数还是正数返回每个客户的发货零件号总和的唯一行。例如:

如果我们两次向客户 A 运送了 20 件 Z 零件,他们将 6 件退回给我们,它会显示:

+-----------------+-------------+---------+
| Customer_Number | Part_Number | Shipped |
+-----------------+-------------+---------+
| A               | Z           |      20 |
| A               | Z           |      20 |
| A               | Z           |      -6 |
+-----------------+-------------+---------+

运行查询后,预期结果:

+-----------------+-------------+---------+
| Customer_Number | Part_Number | Shipped |
+-----------------+-------------+---------+
| A               | Z           |      40 |
| A               | Z           |      -6 |
+-----------------+-------------+---------+

我提出的查询是:

SELECT 
    Customer_Number,
    Part_Number,
    CASE
        WHEN Ship_Quantity > 0 THEN SUM(Ship_Quantity)
        WHEN Ship_Quantity < 0 THEN SUM(Ship_Quantity)
    END
FROM Sales_Line
GROUP BY
    Customer_Number,
    Part_Number

但我得到错误:

列无效。必须是按列分组:SELECT LIST 中的 Ship_Quantity。

当我将“Ship_Quantity”添加到我的 GROUP BY 时,它没有给出准确的结果:

原始输入:

+-----------------+---------------+---------+
| Customer_Number |  Part_Number  | Shipped |
+-----------------+---------------+---------+
| 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  | Shipped |
+-----------------+---------------+---------+
| A045            | X150          | 300.0   |
| A045            | X150          | 373.0   |
| A080            | C76           | -11.0   |
| A080            | C76           | -2.0    |
| A080            | C76           | -3.0    |
+-----------------+---------------+---------+

我该怎么做呢?

福帕斯

SIGN()GROUP BY子句中使用函数

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

请参阅演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在SQL中为auto_increment设置初始值

如果初始值是数组,javascript 中的 reduce 如何工作

如果列的初始值为null,则将文本追加到PostgreSQL中的列数据

在SQL / Vertica中,我如何像返回单独的不相关表中的列那样返回?

如果SQL中的其他表中没有这些值,如何使行中的值显示为NULL

如何将 Firestore 中的数据设置为 Flutter 中 TextField 的初始值?

如果列值在SQL中为null,如何用另一行更新一行

如何返回在SQL中仅返回单个记录的ID?

如果两个单独的列匹配,则熊猫在当前索引中返回单独的列值

SQL Server如何返回NULL而不是0,如果GROUPED值在源中没有行

如何在Jhipster JDL中为实体属性设置初始值?

如何在AngularJS中为select元素设置初始值?

如何在 SwiftUI 中为视图创建两个初始值设定项?

如何在Spring JPA for MySQL中为@Id @GeneratedValue设置初始值?

如何在Verilog中为二维数组赋予初始值

如何在ModelAdmin中为自定义字段分配初始值?

如何隐藏在SQL中为null的总和值?

Oracle SQL查询返回单行中的列结果

如果在 SQL 表中找不到值,如何将行值设置为“否”?

如何为迁移中的主键设置初始值?

如何在react中设置初始值?

如何在 nativescript 中设置 radautocomplete 的初始值?

如何为vuex中的数据设置初始值?

如何摆脱RxSwift中Variable的初始值

如何在指令属性中设置初始值

如何在 Flutter 中动态更改初始值

如何在CreateView中动态设置ForeignKey的初始值?

如何在选择控件中设置初始值?

如何在 Django UsercreationForm 中设置初始值