我有两张表,如下图所示
我需要选择如下图所示的记录。AH_ID 需要加入第二个表,ATT_ID 将是列标题,ATT_DTL_STR_VALUE 需要作为该列相关值
所需输出
听起来您有一个实体-属性-值数据模型,而关系数据库在建模方面并不是最好的。您可能想要查看键值存储。
但是,正如贾斯汀建议的那样,如果您使用的是 11g,则可以使用 th pivot 子句,如下所示:
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 中进行硬编码,但是有一些方法可以动态执行。更多信息可以在这里找到。