|
@@ -18,7 +18,7 @@ var supportDriverMap = map[string]Driver{
|
|
|
"dm": DM,
|
|
|
}
|
|
|
|
|
|
-func GroupUnitFunc(driver string, column, delimiter, tableAlia string) (sqlStr string) {
|
|
|
+func GroupUnitFunc(driver string, column, delimiter string) (sqlStr string) {
|
|
|
dbDriver, _ := getDriverInstance(driver)
|
|
|
if delimiter == "" {
|
|
|
delimiter = ","
|
|
@@ -26,9 +26,9 @@ func GroupUnitFunc(driver string, column, delimiter, tableAlia string) (sqlStr s
|
|
|
if column == "" {
|
|
|
column = "[UNKNOWN COLUMN]"
|
|
|
}
|
|
|
- if tableAlia != "" {
|
|
|
- column = fmt.Sprintf("%s.%s", tableAlia, column)
|
|
|
- }
|
|
|
+ //if tableAlia != "" {
|
|
|
+ // column = fmt.Sprintf("%s.%s", tableAlia, column)
|
|
|
+ //}
|
|
|
switch dbDriver {
|
|
|
case MySql:
|
|
|
sqlStr = fmt.Sprintf("GROUP_CONCAT(%s SEPARATOR '%s')", column, delimiter)
|
|
@@ -40,6 +40,27 @@ func GroupUnitFunc(driver string, column, delimiter, tableAlia string) (sqlStr s
|
|
|
return sqlStr
|
|
|
}
|
|
|
|
|
|
+func GroupUnitDistinctFunc(driver string, column, delimiter string) (sqlStr string) {
|
|
|
+ dbDriver, _ := getDriverInstance(driver)
|
|
|
+ if delimiter == "" {
|
|
|
+ delimiter = ","
|
|
|
+ }
|
|
|
+ if column == "" {
|
|
|
+ column = "[UNKNOWN COLUMN]"
|
|
|
+ }
|
|
|
+ //if tableAlia != "" {
|
|
|
+ // column = fmt.Sprintf("%s.%s", tableAlia, column)
|
|
|
+ //}
|
|
|
+ switch dbDriver {
|
|
|
+ case MySql:
|
|
|
+ sqlStr = fmt.Sprintf("GROUP_CONCAT(DISTINCT %s SEPARATOR '%s')", column, delimiter)
|
|
|
+ case DM:
|
|
|
+ sqlStr = fmt.Sprintf("LISTAGG(DISTINCT %s, '%s') WITHIN GROUP (ORDER BY %s)", column, delimiter, column)
|
|
|
+ default:
|
|
|
+ sqlStr = fmt.Sprintf("GROUP_CONCAT(DISTINCT %s SEPARATOR '%s')", column, delimiter) // 默认使用 MySQL 的语法
|
|
|
+ }
|
|
|
+ return sqlStr
|
|
|
+}
|
|
|
func getDriverInstance(driver string) (dbDriver Driver, err error) {
|
|
|
if driver == "" {
|
|
|
dbDriver = supportDriverMap[DbDriverName]
|