首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套Case语句逻辑

问嵌套Case语句逻辑
EN

Stack Overflow用户
提问于 2018-08-29 02:59:49
回答 1查看 44关注 0票数 1

我正在处理一个查询来扁平化WordPress数据库中的一些wp_postsmeta数据,并且需要在各种meta_values上设置一个特定值。我有一个类别键和不同的类别值,对于每个值,我想为我们的品牌调色板设置一个名为color的列,并命名为color

代码语言:javascript
复制
    select post_title as title, 
 MAX(CASE WHEN meta_key='corporate_calendar_category' THEN meta_value END) as 'category',
 MAX(CASE WHEN meta_key = 'corporate_calendar_subcategory' THEN meta_value END) as 'subcategory',

 // Do I need to include a nested CASE WHEN?
 MAX(CASE WHEN meta_key = 'corporate_calendar_subcategory' and meta_value = 'Marketing' THEN 'blueLagoon' END) as 'color',

 MAX(CASE WHEN meta_key = 'corporate_calendar_presenter' THEN meta_value END) as 'presenter',
 MAX(CASE WHEN meta_key = 'corporate_calendar_date' THEN meta_value END) as 'start_date',
 MAX(CASE WHEN meta_key = 'corporate_calendar_time' THEN meta_value END) as 'start_time',
 MAX(CASE WHEN meta_key = 'corporate_calendar_duration' THEN meta_value END) as 'duration',
 MAX(CASE WHEN meta_key = 'corporate_calendar_registration_link' THEN meta_value END) as 'registration_link',
 MAX(CASE WHEN meta_key = 'corporate_calendar_description' THEN meta_value END) as 'description',
 MAX(CASE WHEN meta_key = 'corporate_calendar_image_path' THEN meta_value END) as 'image_path'

FROM   wp_posts p 
JOIN wp_postmeta m ON p.id = m.post_id
where p.post_type = 'calendar-event'
and p.post_status = 'publish'
GROUP BY p.id

corporate_calendar_subcategory有许多值,营销,人力资源,公司假期等,对于每个子类别,我希望每一行都有一个特定的颜色。

代码语言:javascript
复制
title     category   subcategory       color        presenter   start_date etc.
Example   Training   Marketing         blueLagoon   someone     08/29/2018
Labor Day Reminder   Company Holiday   camelot                  09/03/2018
etc
etc

在针对meta_value时使用嵌套用例是实现这一点的最好方法吗?还是有更好的方法?

我还尝试包含一个if语句(如下所示),但重复了每一行。

代码语言:javascript
复制
if(meta_key = 'corporate_calendar_subcategory', 
 CASE
   WHEN meta_value = 'Marketing' THEn 'blueLagoon'
   WHEN meta_value = 'Company Holiday' THEN 'camelot'
 END,
 '') as color,
EN

回答 1

Stack Overflow用户

发布于 2018-08-29 03:05:27

是的,如果您事先知道所有的类别和颜色,那么嵌套的CASE语句将是正确的方法。如果category-colors在另一个表中,则可以执行subselect或JOIN。

下面是一个嵌套案例的例子:

代码语言:javascript
复制
max(case when meta_key = 'corporate_calendar_subcategory' then
    case meta_value
        when 'Marketing' then 'blue'
        when 'Sales' then 'yellow
        when 'Development' then 'red'
    end
end)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52064650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档