使用带有 Gorm 的原始查询从 psql 检索 sum() 结果

我的原始查询是


SELECT 

  at."category" AS "category", 

  at."month" AS "month", 

  sum(at.price_aft_discount) as "sum", 

  sum(at.qty_ordered) as "sum2" 

FROM 

  all_trans at 

GROUP BY 

  at."category", 

  at."month" 

ORDER BY 

  at."category" ASC, 

  at."month" asc

在 DBeaver 中执行上述查询时,总和列给出警告:sum: numeric(131089,0) (Read-only: No corresponding table column)。给出了相同的警告sum2


我使用 Gorm 在 Go 中查询保存结果的代码是:


type ATQueryResult struct {

   category string  `gorm:"column:category"`

   month    string  `gorm:"column:month"`

   sum      float32 `gorm:"column:sum"`

   sum2     float32 `gorm:"column:sum2"`

}


queryString := ... // same as above

var result []ATQueryResult


db.Table(model.TableAllTrans).Raw(queryString).Find(&result)


fmt.Println(result[3])

但问题是,所有result[i].sum和result[i].sum2是0-zero。在 DBeaver 上实时查询时,我可以看到实际的总和数(全部非零),尽管有上述警告。但是当我尝试将查询结果扫描到 时result,所有的总和值为 0。


精慕HU
浏览 473回答 1
1回答

呼唤远方

必须为 gorm(或它在引擎盖下利用的任何东西)导出这些字段才能填充它们。尝试使用:type ATQueryResult struct {     Category string  `gorm:"column:category"`     Month    string  `gorm:"column:month"`     Sum      float32 `gorm:"column:sum"`     Sum2     float32 `gorm:"column:sum2"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go