当我尝试执行查询时,其结果是混乱的

时间:2019-06-22 12:44:53

标签: sql-server

在sql server中执行查询时,结果看起来像是无序的

下面是我尝试执行但似乎无序的代码

public Map<String,List<Map<String,Object>>> getWorkFlowRule(int payRollId, String wpsFileType) {
String countQuery = "SELECT MAX(wfap.workflowRule) FROM workflowFileApprovalStatus as wfap";
Object countObj = getJdbcTemplate().queryForObject(countQuery, new Object[] {}, Integer.class);
int tempCount =0;
if(countObj!=null)
{
tempCount =(Integer) countObj;
}
final int ruleCount = tempCount;
int ruleNo = 1;
StringBuffer sbSql = new StringBuffer("with wfRule as( select distinct a.roleDescription," +
"a.filename,a.workflowrule,COUNT(*) as count ,cast(COUNT(*) as varchar(20))+' '" +
"+a.roleDescription as des from workflowFileApprovalStatus a inner join uae_wpsdownload " +
"down  on a.fileId = down.cid left join fk_tbluser c on c.cid = a.approvedby where " +
"down.payrollid = ? and down.fileType = ?  GROUP BY a.filename," +
"a.workflowrule,a.roleDescription  HAVING COUNT(*) >0 ) ");

sbSql.append("SELECT distinct filename ");
while(ruleNo<=ruleCount)
{
sbSql.append(", ISNULL(STUFF((SELECT '+' + des from wfRule ssm WHERE ssm.filename=std.filename and " +
"ssm.workflowRule = "+ruleNo+ "FOR XML PATH('') ), 1, 1, ''), ' ') AS rule"+ruleNo);
//sbSql.append(" FOR XML PATH('') ), 1, 1, ''), ' ') AS rule"+ruleNo);
ruleNo++;
}
sbSql.append(" FROM wfRule std");
List params = new ArrayList();
params.add(payRollId);
params.add(wpsFileType);

return (Map<String, List<Map<String, Object>>>) getJdbcTemplate()
.query(sbSql.toString(), params.toArray(), new ResultSetExtractor() {
public Object extractData(ResultSet rs)
throws SQLException,
org.springframework.dao.DataAccessException {
Map<String, List<Map<String, Object>>> map = new HashMap<String, List<Map<String, Object>>>();

while (rs.next()) {
int rno =1;
Map<String, Object> record = new HashMap<String, Object>();
while(rno<=ruleCount)
{
record.put("rule"+rno, rs.getString("rule"+rno));
rno++;
}
String fileName = rs.getString("filename");
if (map.containsKey(fileName)) {
List<Map<String, Object>> list = map
.get(fileName);
list.add(record);
} else {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
list.add(record);
map.put(fileName, list);
}
}
return map;
}
});
}

下面是表格结构

enter image description here

预期结果

授权者+超级授权者或批准者b +批准者3

我执行查询时的实际结果

授权者+超级授权者或批准者3 +批准者b

0 个答案:

没有答案