我的查询
Select ID,string_agg(doc_id,',') from table group by ID;
这给了我
ID DOC_ID
123 01,02,03
456 01
789 02
100 01,03
现在,我不希望doc_id为01和02的数据。但是,如果01和02与其他doc_id一起出现,那么我希望将其输入
现在我跑步时
Select ID,string_agg(doc_id,',') from table group by ID,doc_id having doc_id not in (02,03) ;
它没有给我任何东西,而我却期待着
ID DOC_ID
123 01,02,03
100 01,03
那么如何使用字符串agg赋予条件?
答案 0 :(得分:0)
几种可能的方式...
首先,仅消除合计仅为“ 01”或“ 02”的任何结果:
<span class="gag-title">@Html.DisplayFor(modelItem => modelItem.Points)</span><br />
或者,您可以使用其他逻辑,例如,如果计数大于1(因此,仅不能为'01'或'02') OR 单个结果不是“ 01”或“ 02”:
select
id, string_agg (doc_id, ',')
from table
group by id
having
array_agg (doc_id) not in ('{01}', '{02}')
'min'之所以起作用,是因为此时count> 1失败时,您知道您只有一个元素...因此min将是该元素的结果。