forked from github/dataease
fix: sql 拼接错误
This commit is contained in:
parent
408a796e74
commit
c51a41da34
@ -898,7 +898,7 @@ public class EsQueryProvider extends QueryProvider {
|
||||
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 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 {
|
||||
String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double");
|
||||
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast);
|
||||
|
@ -19,12 +19,10 @@ public class EsSqlLConstants extends SQLConstants {
|
||||
|
||||
public static final String CAST = "CAST(%s AS %s)";
|
||||
|
||||
public static final String ROUND = "ROUND(%s, %s)";
|
||||
|
||||
public static final String DEFAULT_DATE_FORMAT = "YYYY-MM-dd HH:mm:ss";
|
||||
|
||||
public static final String DEFAULT_INT_FORMAT = "DECIMAL(20,0)";
|
||||
|
||||
public static final String DEFAULT_FLOAT_FORMAT = "DECIMAL(20,2)";
|
||||
|
||||
public static final String WHERE_VALUE_NULL = "(NULL,'')";
|
||||
|
||||
public static final String WHERE_VALUE_VALUE = "'%s'";
|
||||
|
@ -282,7 +282,11 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
|
||||
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
|
||||
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
|
||||
@ -353,7 +357,11 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
.build();
|
||||
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
|
||||
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
|
||||
@ -491,7 +499,11 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
|
||||
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
|
||||
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
|
||||
@ -604,7 +616,11 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
|
||||
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
|
||||
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
|
||||
@ -686,7 +702,11 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
|
||||
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
|
||||
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
|
||||
@ -1057,12 +1077,4 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
querySql(groups, aggregators, filters, orders, table)
|
||||
querySql(limitFiled, groups, aggregators, filters, orders, table)
|
||||
::=<<
|
||||
SELECT
|
||||
<if(limitFiled)>
|
||||
<limitFiled.limitFiled>
|
||||
<endif>
|
||||
<if(!groups && !aggregators)>
|
||||
*
|
||||
<endif>
|
||||
|
Loading…
Reference in New Issue
Block a user