Abap 选择位置条件中的默认比较操作数

Abap 选择位置条件中的默认比较操作数,abap,opensql,Abap,Opensql,我有一个表CategoryColor,如果找不到类别,它应该返回默认类别“*”中的颜色 示例:如果表格包含以下行: Category Color * white * black 1 red 1 blue 1 green 1 black 如果我搜索类别“1”,查询应该得到4种颜色 如果我搜索类别“2”,它在表中没有记录,查询应该从类别“*”中获得2种颜色 是否可以使用OpenSQL在一条语句中获得所

我有一个表CategoryColor,如果找不到类别,它应该返回默认类别“*”中的颜色

示例:如果表格包含以下行:

Category  Color
*         white
*         black
1         red
1         blue
1         green
1         black
如果我搜索类别“1”,查询应该得到4种颜色

如果我搜索类别“2”,它在表中没有记录,查询应该从类别“*”中获得2种颜色

是否可以使用OpenSQL在一条语句中获得所需的确切列表

我尝试了CASE和子查询(EXIST),但没有成功


它不是我代码的拦路虎,因为我可以先检查我的类别是否有记录,或者选择我的类别+默认值always,然后删除其他类别是否有记录的默认值。

我想你可以使用UNION。我没有尝试代码,它可能包含类型错误

SELECT
      category,
      color
    FROM CategoryColours
   WHERE category = lv_category
UNION
SELECT
  category,
  color
FROM CategoryColours
WHERE category eq '*'
 AND NOT EXISTS ( SELECT color 
                    FROM CategoryColours 
                   WHERE category = lv_category
                 )
INTO TABLE @DATA(lt_itab).

我想你可以用工会。我没有尝试代码,它可能包含类型错误

SELECT
      category,
      color
    FROM CategoryColours
   WHERE category = lv_category
UNION
SELECT
  category,
  color
FROM CategoryColours
WHERE category eq '*'
 AND NOT EXISTS ( SELECT color 
                    FROM CategoryColours 
                   WHERE category = lv_category
                 )
INTO TABLE @DATA(lt_itab).

请您添加一些您尝试使用的SQL代码,并尝试向您的问题中添加格式化的、可读的示例数据。听起来您可以使用该函数。请您添加一些您尝试使用的SQL代码,并尝试向您的问题中添加格式化的、可读的示例数据。听起来你可以使用这个功能。