首页 > 解决方案 > CASE WHEN 来自没有子查询的嵌套 CASE WHEN?

问题描述

如果订单有 2+ 个单位,这将创建一个片段:

CASE WHEN SUM(quantity) > 1 then '2+ Units' ELSE '1 Unit' END as qty_flag_total

我想创建仅计算特定产品类别的其他版本,因此仅对产品“自行车”的数量求和。

我有这个来总结产品“自行车”的数量:

SUM(CASE WHEN category = 'bike' THEN quantity END) AS qty_bike

但是想知道是否有一种干净的方法可以在此之上创建相同的标志,以确定数量是“1 个单位”还是“2+ 个单位”?

我只知道它在子查询中进行上述操作,然后使用 2+ 单元标志 CASE,但如果可能的话,希望从基表中完成所有操作。

标签: sqlpivotcaseaggregate-functions

解决方案


这是你想要的吗?

CASE WHEN SUM(CASE WHEN category = 'bike' THEN quantity END) > 1
    THEN '2+ Bike Units'
    ELSE '1 Bike Unit'
END AS qty_flag_bike

当根本没有自行车装置时,您可能还想处理这种情况:

CASE SUM(CASE WHEN category = 'bike' THEN quantity ELSE 0 END)
    WHEN 0 then 'No Bike Unit'
    WHEN 1 then '1 Bike Unit'
    ELSE '2+ Bike Units'
END AS qty_flag_bike

推荐阅读