Java 如何为“x”的n列设置列名
Hi以下查询正在返回:未为“t”的第1列指定列名Java 如何为“x”的n列设置列名,java,sql,sql-server,Java,Sql,Sql Server,Hi以下查询正在返回:未为“t”的第1列指定列名 public ArrayList<DocumentModel> findByDate(String code, String date, String dateFinal) throws GeneralException{ ArrayList<DocumentModel> docs = new ArrayList<DocumentModel>(); String d1 = date;
public ArrayList<DocumentModel> findByDate(String code, String date, String dateFinal) throws GeneralException{
ArrayList<DocumentModel> docs = new ArrayList<DocumentModel>();
String d1 = date;
String delimiter = "-";
String[]temp = d1.split(delimiter);
String[]temp2 = dateFinal.split("-");
String num="";
String alfa="";
if (code.compareTo("")!=0){
String[] c1 = code.split(",");
num = c1[0];
alfa = c1[1];
}
try{
String sql = "SELECT max(issuedate),airlineOid as airlineNumericCode FROM Document WHERE ";
if (alfa.compareTo("")!=0) sql+=" airlineOid='"+alfa+"' and ";
sql+=" convert(varchar,issueDate,112) >= '" + temp[0]+ temp[1] +"00' AND convert(varchar,issueDate,112) < '"+ temp2[0]+ temp2[1] +"32' group by airlineOid";
String sql2="select d.*,'"+num+"' as airlineNumericCode from document d,("+sql+") as t where t.airlineOid=d.airlineOid and t.issueDate=d.issueDate ORDER BY issueDate DESC ";
ResultSet rs = this.executeQuery(sql2);
while(rs.next()){
docs.add((DocumentModel)this.build(rs));
}
if(docs != null){
return docs;
} else {
return docs = null;
}
} catch (SQLException ex){
throw new GeneralException(ex);
}
}
我看不出应该在哪里指定名称。
非常感谢你!
顺致敬意,
Ignacio您需要向maxissuedate添加列别名,如下所示:
String sql = "SELECT max(issuedate) as MaxIssueDate, airlineOid as airlineNumericCode FROM Document WHERE ";
我认为这是您的问题……您在SQL中将airline0id重命名为airlineNumericCode。然后,在sql2中,尝试将其称为airline0id。试试这个:
String sql = "SELECT max(issuedate) as issueDate,airlineOid as airlineNumericCode FROM Document WHERE ";
...
String sql2="select d.*,'"+num+"' as airlineNumericCode from document d,("+sql+") as t where t.airlineNumericCode=d.airlineOid and t.issueDate=d.issueDate ORDER BY issueDate DESC ";
您能在后台运行探查器并查看SQL server端实际执行的查询吗?不,我不能,非常感谢much@IgnacioGarat为什么不呢?如果是因为您有SQL Server的Express edition,请查看。您已经得到了答案,但在将来可能仍然有用。使用字符串sql=选择maxissuedate作为**maxissuedate**,airlineOid作为有效列名“airlineOid”。可能是吗?听起来第一个问题是,它没有第一列的名称或别名,而您现在发现的第二个问题是表文档中没有名为airlineOid的列。但我们必须查看表结构才能确定。我已经尝试过这样做,但现在得到了无效的列名“airlineOid”。