2011-01-26 8 views
0

大きなデータセットでデータの小さなサブセットを返したいのですが、実際には戻ったときに文字列にする必要があります。 ...これは可能ですか?複数の行を持ち、相関行として返されるDB2 - サブクエリ

私のシナリオ - 、私は可能性が...しかし、彼らは3つの以前の日付の「エントリー」を作っている情報の宣伝文句が含ま

を - 私は人々のリストを持っている、と私はそのリストを返すようにしたいと言うことができますメインセットをループし、現在のユーザーが「エントリ」を作成した最後の3つの日付のためにデータベースを再クエリしますが、これはDBへの余分な呼び出しをもたらします。

私は情報にGROUPを付け加えることができます(私には証明がありません)が、これはあまりにも無駄だと思います。私の出力にはループのループが必要です。

私は、これらの「最後の3つの」エントリ日付をサブクエリの単純な文字列として返したいと思っています。データセットには、単に私が望むデータの '文字列'表現が含まれています...したがって、私のループ出力は非常に効率的である... 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

他の質問に答えてもらえますか?彼らがあなたの判断で*いる場合は、それらの隣にあるチェックマークをクリックすることで、「答え」をマークすることで、他の人が良い解決策を理解するのに役立ちます。また、評判システムを通じて回答者に報酬を与え、より多くの回答を提供するように(ゲームのような担当者を志望する)人々を奨励します。 –

+0

(そして、いいえ、私はこの答えを知らないことがわかります。高度なSQLクエリについては、初心者です。) –

+0

どのバージョンのDB2を使用していますか? –

答えて

0
を見つけることができます

私はそのタイプのものにUDF()を使用します。基本的には、intIDをパラメータとするSQL関数を記述します。この関数は、そのIDのメトリックを検索し、それらをすべて文字列で返します。このようにして、醜い文字列の操作を途中で止め、メインコードで次のようなことをすることができます:

SELECT U.intID, 
     U.strName, 
     GetMetrics(U.intID) 
FROM live.tblUsers U 
関連する問題