2011-01-26 76 views
0

我想返回一小部分數據與更大的數據集......它真的只需返回一個字符串 - 因爲它只是顯示... 這可能嗎?DB2 - 具有多行的子查詢,返回相關行

我的方案 - 可以說,我有一個人名單,我想就返回表 - 但包括他們提出的前三個日期「項」信息的導語...

我可以,循環遍歷主集,然後重新查詢數據庫以獲取當前用戶創建'條目'的最後三個日期 - 但這會導致額外調用db的LOTS - 非常低效。

我可以在我的輸出中簡單地加入信息和GROUP(但我沒有證據),但我認爲這也有點浪費,因爲我依賴循環來產生輸出。

我想我想在子查詢中將這些「最後三個」入口日期作爲一個簡單的字符串返回......以便數據集只包含我想要的數據的「字符串」表示形式......因此我環路輸出將是非常有效的......因爲我會查詢到DB ...

這裏就是我有SOFAR - 但它的炸彈,我可以找出爲什麼......

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

您應該檢查是否有人給了切實可行的回答你的任何其他問題;如果他們在你的判斷中有*,標記他們「答案」(通過點擊旁邊的複選標記)將有助於他人理解什麼是好的解決方案。它還通過聲譽系統獎勵回答者,並鼓勵人們(喜歡像遊戲那樣扮演代表)提供更多答案。 – 2011-01-26 21:39:09

回答

0

我對這種類型的東西使用UDF()。基本上你寫一個SQL函數,它將intID作爲參數。然後該函數將查找該id的度量標準並將其全部返回到一個字符串中。這樣,你保持的fugly字符串操作的方式進行,並可以做這樣的事情在你的主代碼:

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