首页 > 解决方案 > 用于将子行组合成单行视图的 SQL 查询

问题描述

我有活动父表和活动子表。我需要一个 sql 查询来将键作为列名,将值作为列值作为单个父行。表格和结果如图所示。键和值将动态变化。谢谢

活动表

Activityid     Activity  Time               
10            Activity1   Time1                 
11  Activity2   Time2                   
12  Activity3   Time3                   
13  Activity4   Time4                   

        

活动表

Activityid  key value                   
10  Name    Mike                    
10  Account Saving                  
10  Type    Current                 
11  Party   ISG                 
11  loan    11233                   

                        
                        

如果我给 activityid 10,我应该得到如下结果

Activityid  Activity    Time    Name    Account Type    
10         Activity1    Time1   Mike    Saving  Current     

标签: sqlviewdb2

解决方案


这种算法称为“枢轴”。
您可以使用在 DB2 中的 DB2 中的链接动态数据透视 SQL 查询中描述的通用例程。
使用以下调用为您的案例获取所需的结果集:

CALL PIVOT
(
'
SELECT A.*, B.key, B.value
FROM Activity A
JOIN Activities B ON B.Activityid = A.Activityid
WHERE A.Activityid = 10
'  
, 'Activityid, Activity, Time'
, 'key'
, 'value'
, 'max'
, 'SESSION.PIVOT'
, '-'
, ?, ?, ?
);

推荐阅读