我有一个#tmp表,如下所示:
ivSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(gridShowing) {
gridShowing=false;
recyclerView.setLayoutManager(new LinearLayoutManager(ResultsActivity.this));
ivSwitch.setImageResource(R.drawable.ic_grid);
}
else {
gridShowing=true;
recyclerView.setLayoutManager(new GridLayoutManager(ResultsActivity.this, 2));
ivSwitch.setImageResource(R.drawable.ic_list);
}
}
});
我想根据line_no的升序来合并DefaultDimension和DefaultDimensionName列
这是我写的查询,但没有按顺序得到它:
recid DefaultDimension DefaultDimensionName line_no
5637423499 Default Employee 7
5637423499 1001 Product 8
5637423499 100 Region 2
5637423499 1 Routing 17
5637423499 115 Section 5
5637423499 999 Unit 6
5637423499 1510 Branch 3
5637423499 A CabinClass 14
5637423499 0B Carrier_Property 9
5637423499 103 Channel 16
5637423499 104 Department 4
5637423499 113 Division_CustomerType 1
结果:
select recid,
STRING_AGG(DefaultDimension, '-') WITHIN GROUP (ORDER BY line_no ASC) DefaultDimension,
STRING_AGG(DefaultDimensionName, '-') WITHIN GROUP (ORDER BY line_no ASC) DefaultDimensionName
from #tmp
group by recid
您可以看到CabinClass应该排在倒数第3位,但是排在第2位。
答案 0 :(得分:4)
您通常会注意到,您的line_no
是varchar
'1'<'14'<'16 <'17'<'2'
因此,只需将varchar解析为int即可解决问题。
select recid,
STRING_AGG(DefaultDimension, '-') WITHIN GROUP (ORDER BY CAST(line_no AS int) ASC) DefaultDimension,
STRING_AGG(DefaultDimensionName, '-') WITHIN GROUP (ORDER BY CAST(line_no AS int)ASC) DefaultDimensionName
from #tmp
group by recid
答案 1 :(得分:1)
由于您的line_no似乎是varchar,请先将其强制转换为INT:
select recid,
STRING_AGG(DefaultDimension, '-') WITHIN GROUP (ORDER BY cast(line_no as INT) ASC) DefaultDimension,
STRING_AGG(DefaultDimensionName, '-') WITHIN GROUP (ORDER BY cast(line_no as INT) ASC) DefaultDimensionName
from #tmp
group by recid