如何在Oracle中选择行数据作为列

时间:2013-05-21 07:23:53

标签: oracle

我有两张表,比如波纹表格数字

enter image description here

enter image description here

我需要选择如下图所示的记录。 AH_ID需要加入第二个表,而ATT_ID将是列标题,ATT_DTL_STR_VALUE需要得到该列的相关值

必需的输出

enter image description here

1 个答案:

答案 0 :(得分:1)

听起来你有一个关系数据库Entity-Attribute-Valuearen't the best at modeling数据模型。您可能需要查看key-value store

然而,正如Justin建议的那样,如果你使用的是11g,你可以使用如下的枢轴条款:

SELECT *
FROM (
      SELECT T1.AH_ID, T1.AH_DESCRIPTION, T2.ATT_ID, T2.ATT_DTL_STR_VALUE
      FROM T1 
        LEFT OUTER JOIN T2 ON T1.AH_ID = T2.AH_ID
     )
PIVOT (MAX(ATT_DTL_STR_VALUE) FOR (ATT_ID) IN (1));

此语句要求您在ATT_ID中进行硬编码,但有多种方法可以动态执行。可以找到更多信息here