2017-06-22 9 views
0

でコンディショニング:SQL:私は、SQL次ている集計関数

SELECT LISTAGG((TO_CHAR(ch.count), '|') WITHIN GROUP (ORDER BY ch.Count) 
    FROM ChG cg 
    JOIN Ch ch on ch.GroupID = cg.GroupID 
    WHERE cg.PartyID = cp.PartyID 

私は条件を追加したいと思い、擬似コード: if(ch.TYPECODE = 1) then ch.count = 'A' + ch.count。どのようにストアドプロシージャで達成する方が良いですか?

+1

「A '+ ch.count」とはどういう意味ですか?あなたは連結を意味しますか?オラクルはそれには '||'を使用し、プラス記号は使用しません。 – mathguy

答えて

2
listagg(case when ch.typecode = 1 then 'A' end || to_char(ch.count), '|') ..... 

集計の前に、各行は条件ch.typecode = 1を検査されます。それが真であれば、'A'が先に連結されている(to_char(ch.count)の前に連結されている)。私はあなたが必要としていることだけを推測しています。

をORDER BY条件の場合にはch.countにする必要がある場合は、同じことを行うことができます。あなたはto_char内に同様にラップする必要があります。 (もしそうでなければ、オラクルはあなたのためにそれをやっていますが、可能な限り暗黙の変換を避けてください)