0

我的表结构如下

FIELD1 FIELD2 FIELD3 FIELD4
ID001  AB     1      R
ID001  CD     2      R
ID002  AB     1      R
ID002  CD     3      R
ID002  EF     4      R
ID003  AB     1      R
ID003  CD     2      R
ID003  PQ     4      R
ID004  PQ     1      R
ID004  RS     2      R

我从其他资源获得的输入是这样的:

Field2、field3 和 field4 将是输入。字段 2 和字段 3 将组合发送。字段 4 将发送一次。

Input 1-((AB,1,CD,2),R)
Input 2-((AB,1,CD,2,PQ,4),R) 

For this I should get field1 as the output.
For input 1, it should return ID001
For input 2, it should return ID003.

有人可以帮我解决这个问题吗?

整个要求是field1从其他领域获得。

4

1 回答 1

0

它使用 DB2 的 XML 聚合功能工作,并将输入参数作为连接的过滤器字符串:

select field1 from 
(
  select 
    field1,
    xmlcast(xmlgroup(field2 || field3 as a) as varchar(15)) as fields23,
    field4 
  from 
    your_table 
  group by 
    field1, field4
)
  where
    fields23 = 'AB1CD2' and field4 = 'R';

对于“输入 2”情况,请使用此过滤器:

...
  where
    fields23 = 'AB1CD2PQ4' and field4 = 'R';

基于此博客条目:https ://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/aggregating_strings42?lang=en

于 2013-09-30T13:04:50.703 回答