在以下场景的查询开发中需要帮助

时间:2013-07-23 05:26:17

标签: db2

我的表结构如下

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将是输入。 Field2和field3将组合发送。字段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

1 个答案:

答案 0 :(得分: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