SQL中,当case,when语句返回多个值时怎样放在select 子语句中才合适?

需要明确的是,SQL中的CASE WHEN语句用于根据条件返回不同的值,但它本身不能直接返回多个值。
其实很简单。
你可以这样使用它:
我们先来说说最重要的事情。
如果需要返回某一列的不同值,可以直接在SELECT子句中使用CASE WHEN。
例如,在我们去年运行的一个项目中,我们使用这种方法根据用户行为返回不同的帐户。
数据量在3 000条左右,结果非常好。

还有一点,如果需要为多列生成值,则应该为每一列编写一个 case when 语句。
例如,有时我们根据订单的状态和金额创建两列,一列代表折扣后的金额,一列代表状态报表。

起初我以为我可以运行多个场景并一次生成多个值,但后来我意识到这是错误的。
这使得SQL语句变得复杂且难以维护。
还有另一个重要的细节。
如果在子查询中使用 CASE WHEN 返回多个值,则必须确保子查询是标量子查询,或者结果集已正确构造。
例如,如果无条件返回太多值,则可能会导致错误。
很多人没有注意到这一点,但我认为值得尝试。

简单来说,表达式用于为某一列返回不同的值。
如果要为多列生成值,请为每列使用 CASE WHEN。
对于子查询,请确保正确处理结果集以避免无条件错误。

简述SQL中的case when语句

2 02 3 年,我的朋友在学习SQL时,遇到了“case字段名when ... then ...”和“case when条件句... then ...”的用法选择。
事实上,casewhen是一个流程控制语句,就像一个函数。
有两种格式,第一种是“CASE字段名WHEN字段值THEN值1 ELSE值2 END”,第二种是“CASEWHEN条件判断THEN值1 ELSE值2 END”。
例如,有一个 Table_A 表,其中包含性别和人口字段,用于统计男性和女性人口。
SQL 是:
sql 选择国家/地区,SUM(CASE WHEN sex='1 ' THEN Population ELSE 0 END) 作为“男性人口”, SUM(CASE WHEN sex='2 ' THEN Population ELSE 0 END) as '女性人口' 来自表_A 按国家/地区分组;
此示例说明使用 casewhen 进行分组计算。
再比如THTF_ENERGY_TEST表,能源消耗类型和能源消耗值,水耗、电耗、热耗的计算:
sql 选择 E_CODE,SUM(CASE WHEN E_TYPE=0 THEN E_VALUE ELSE 0 END)AS WATER_ENERGY, SUM(CASE WHEN E_TYPE=1 THEN E_VALUE ELSE 0 END) AS ELE_ENERGY, SUM(CASE WHEN E_TYPE=2 THEN E_VALUE ELSE 0 END) AS HEAT_ENERGY 来自 THTF_ENERGY_TEST 按 E_CODE 分组;
此示例展示了与聚合函数结合来分析数据的情况。
总的来说,casewhen的使用要看需求,灵活高效,可以提高数据处理的效率和准确性。
由你决定。

sql中casewhen的用法

这是一个陷阱。
避免在 CASE WHEN 中重叠太多层。
很容易出现性能问题。