提交 c51a41da authored 作者: taojinlong's avatar taojinlong

fix: sql 拼接错误

上级 408a796e
...@@ -898,7 +898,7 @@ public class EsQueryProvider extends QueryProvider { ...@@ -898,7 +898,7 @@ public class EsQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double"); String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double");
String agg = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast); String agg = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast);
fieldName = String.format(EsSqlLConstants.CAST, agg, EsSqlLConstants.DEFAULT_FLOAT_FORMAT); fieldName = String.format(EsSqlLConstants.ROUND, agg, "2");
} else { } else {
String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double"); String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double");
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast); fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast);
......
...@@ -19,11 +19,9 @@ public class EsSqlLConstants extends SQLConstants { ...@@ -19,11 +19,9 @@ public class EsSqlLConstants extends SQLConstants {
public static final String CAST = "CAST(%s AS %s)"; public static final String CAST = "CAST(%s AS %s)";
public static final String DEFAULT_DATE_FORMAT = "YYYY-MM-dd HH:mm:ss"; public static final String ROUND = "ROUND(%s, %s)";
public static final String DEFAULT_INT_FORMAT = "DECIMAL(20,0)";
public static final String DEFAULT_FLOAT_FORMAT = "DECIMAL(20,2)"; public static final String DEFAULT_DATE_FORMAT = "YYYY-MM-dd HH:mm:ss";
public static final String WHERE_VALUE_NULL = "(NULL,'')"; public static final String WHERE_VALUE_NULL = "(NULL,'')";
......
...@@ -282,7 +282,11 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -282,7 +282,11 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view); if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
} }
@Override @Override
...@@ -353,7 +357,11 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -353,7 +357,11 @@ public class SqlserverQueryProvider extends QueryProvider {
.build(); .build();
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view); if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
} }
@Override @Override
...@@ -491,7 +499,11 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -491,7 +499,11 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view); if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
} }
@Override @Override
...@@ -604,7 +616,11 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -604,7 +616,11 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view); if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
} }
@Override @Override
...@@ -686,7 +702,11 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -686,7 +702,11 @@ public class SqlserverQueryProvider extends QueryProvider {
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres); if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders); if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL); if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view); if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
} }
@Override @Override
...@@ -1057,12 +1077,4 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -1057,12 +1077,4 @@ public class SqlserverQueryProvider extends QueryProvider {
} }
return originField; return originField;
} }
private String sqlLimit(String sql, ChartViewWithBLOBs view) {
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", view.getResultCount(), sqlFix(sql));
} else {
return sql;
}
}
} }
querySql(groups, aggregators, filters, orders, table) querySql(limitFiled, groups, aggregators, filters, orders, table)
::=<< ::=<<
SELECT SELECT
<if(limitFiled)>
<limitFiled.limitFiled>
<endif>
<if(!groups && !aggregators)> <if(!groups && !aggregators)>
* *
<endif> <endif>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论