我的“种族”应用程序中有一个下拉字段,其中有4个可能的值。我正在使用该值在字母中填充占位符。在应用程序中选择每个值时,每个值都有一个单独的逻辑来填充[X]。例如:当选择“亚洲人”时,在那上面有一个十字括号。并且当未选中时,曾经有一个空白的括号,看起来像下面的样子。
[ ] White
[ ] Black
[X] Asian
[ ] Other
代码如下:
SELECT
DECODE(
lower(ml.ethnicity),
'Asian',
'[X]',
'[ ]'
)
FROM
pat_race pr,
m_ethnicity ml
WHERE
ml.ethnicity_id (+) = pr.ethnicity_id
AND
pr.pat_id =xyz;
同样,这4个值有4个逻辑,然后用作字母中的占位符。
现在种族字段从下拉列表更改为多选字段。
因此,在为单个患者的应用程序中选择多个种族时,我在下面的字母中得到了迷失方向的输出。
在选择2个种族时,输出如下:
[ ],[X] White
[ ],[ ] Black
[X],[ ] Asian
[ ],[ ] Other
在选择3个种族时,输出如下:
[ ],[X],[ ] White
[ ],[ ],[X] Black
[X],[ ],[ ] Asian
[ ],[ ],[ ] Other
当选择多个值时,我需要具有以下输出:
[X] White
[X] Black
[X] Asian
[ ] Other
答案 0 :(得分:0)
您没有提供测试用例,所以我试图想象您所拥有的。这只是两个表的必要列集:
SQL> create table m_ethnicity (ethnicity_id number, ethnicity varchar2(10));
Table created.
SQL> create table pat_race (ethnicity_id number, ethnicity varchar2(10));
Table created.
SQL> insert into pat_race
2 select 100, 'Asian' from dual union all
3 select 200, 'Black' from dual union all
4 select 300, 'White' from dual union all
5 select 400, 'Other' from dual;
4 rows created.
SQL> insert into m_ethnicity values (100, 'Asian');
1 row created.
SQL>
如果使用这样的查询,则结果为OK:
SQL> select case when ml.ethnicity = 'Asian' then '[x]'
2 when ml.ethnicity = 'White' then '[x]'
3 when ml.ethnicity = 'Black' then '[x]'
4 when ml.ethnicity = 'Other' then '[x]'
5 else '[ ]'
6 end res,
7 pr.ethnicity
8 from pat_race pr left join m_ethnicity ml on ml.ethnicity_id = pr.ethnicity_id;
RES ETHNICITY
-------------------- ----------
[x] Asian
[ ] Other
[ ] Black
[ ] White
SQL>
好;如果选择了其他种族(例如,将插入插入表格中)怎么办:
SQL> insert into m_ethnicity values (300, 'White');
1 row created.
SQL> select case when ml.ethnicity = 'Asian' then '[x]'
2 when ml.ethnicity = 'White' then '[x]'
3 when ml.ethnicity = 'Black' then '[x]'
4 when ml.ethnicity = 'Other' then '[x]'
5 else '[ ]'
6 end res,
7 pr.ethnicity
8 from pat_race pr left join m_ethnicity ml on ml.ethnicity_id = pr.ethnicity_id;
RES ETHNICITY
-------------------- ----------
[x] Asian
[x] White
[ ] Other
[ ] Black
SQL>
看起来不错,即就像您想要的一样。
现在,如果这不是您所需要的,请-提供测试用例-而不是作为评论,而只需编辑您发布的初始消息即可。