diff --git a/common/report/builder/sql_builder.go b/common/report/builder/sql_builder.go index f219388..11a4357 100644 --- a/common/report/builder/sql_builder.go +++ b/common/report/builder/sql_builder.go @@ -360,6 +360,8 @@ func (b *SQLBuilder) buildTimeGroupExpr(dateField, timeGroup string) string { } // parseExpression 解析衍生指标表达式 +// 将 {fieldCode} 占位符替换为原始字段名,当字段不在 indicators 中时仍返回 fieldCode +// 避免未替换的 {fieldCode} 占位符泄漏到 SQL 中导致语法错误 func (b *SQLBuilder) parseExpression(expr string, indicators []model.IndicatorSelect) string { re := regexp.MustCompile(`\{([^}]+)\}`) return re.ReplaceAllStringFunc(expr, func(match string) string { @@ -369,7 +371,8 @@ func (b *SQLBuilder) parseExpression(expr string, indicators []model.IndicatorSe return fieldCode } } - return match + // 字段不在 indicators 中也返回裸字段名(避免 {fieldCode} 残留 SQL 导致语法错误) + return fieldCode }) }