DB2 - 具有多行的子查询,作为相关行返回

时间:2011-01-26 21:25:14

标签: sql db2

我想用更大的数据集返回一小部分数据......它真的只需要在返回时成为一个字符串 - 因为它只是显示...这是可能的吗?

我的情景 - 假设我有一个人的列表,我想要返回该列表 - 但是包括他们在之前的三个日期做出“条目”的信息:

我可以循环遍历主集,并重新查询数据库中当前用户创建“条目”的最后三个日期 - 但这会导致对数据库的额外调用 - 非常低效。

我可以简单地加入信息,并在我的输出上加入GROUP,(我没有证据)但我认为这也有点浪费,因为我依赖循环中的循环来输出。

我认为我想将这些“最后三个”输入日期作为子查询中的简单字符串返回...以便数据集只包含我想要的数据的“字符串”表示...因此我的循环输出非常有效......我对DB的查询......

这就是我所熟悉的东西 - 但它有炸弹,我可以找出原因......

SELECT 
        U.intID,
        U.strName,
       (
            SELECT TRIM(CAST(CAST(EO.intData AS CHAR(25)) AS VARCHAR(25))) || ' on ' || TRIM(CAST(EO.dateRecorded AS VARCHAR(25))) || '<br/>'
            FROM   metrics EO
            WHERE  EO.fkID = U.intID
            ORDER BY EO.dateRecorded DESC
            FETCH FIRST 3 ROWS ONLY
        ) AS strLast3
    FROM live.tblUsers U

1 个答案:

答案 0 :(得分:0)

我对这种类型的东西使用UDF()。基本上你编写了一个以intID为参数的SQL函数。然后,该函数将查找该id的度量标准并将其全部返回到字符串中。通过这种方式,你可以避免使用不好的字符串操作,并且可以在主代码中执行类似的操作:

SELECT U.intID, 
       U.strName, 
       GetMetrics( U.intID )
FROM live.tblUsers U