首页 > 解决方案 > 如何遍历表动态生成case语句

问题描述

我有一个两列的表,如下所示

顾客姓名 顾客类型
吉姆·史密斯 零售
南希·琼斯 批发的
迈克·威廉姆斯 零售
... ...

我希望能够遍历表以动态生成案例语句,如下所示

CASE WHEN CUSTOMER_NAME = 'Jim Smith' THEN 'Retail' 
     WHEN CUSTOMER_NAME = 'Nancy Jones' THEN 'Wholesale'  
     WHEN CUSTOMER_NAME = 'Mike Williams' THEN 'Retail'
     ...
ELSE NULL END AS CUSTOMER_TYPE

做这个的最好方式是什么?

标签: postgresql

解决方案


这有点奇怪。您编写的 SQL 类似于说 -

select case when CUSTOMER_NAME = CUSTOMER_NAME then CUSTOMER_TYPE end as CUSTOMER_TYPE

customer_name 始终等于 customer_name。您不妨将其重写为

select CUSTOMER_TYPE

查看您的完整查询以查看您这样做是否有原因可能会有所帮助。但是这里的 case 语句大多是不必要的。


推荐阅读