我的任务是乘以数量 * 价格字段,并选择“价格”、“数量”、“product_id”字段。还按createdAt中的日期分组。但在此代码中,我收到以下错误:“错误:列“ProductsOfOutgoingInvoice.price”必须出现在 GROUP BY 子句中或在聚合函数中使用”。如果我将字段“价格”、“数量”、“产品 ID”添加到组字段中,则错误消失,但按日期分组消失。帮助我决定在采样时选择“价格”、“数量”、“产品 ID”字段,同时还可以按日期对所有请求进行分组
const productsOfOutgoingInvoice: any = await connection.transaction(
async (transaction: Transaction) => {
return ProductsOfOutgoingInvoice.findAll({
raw: true,
attributes: [
[Sequelize.fn("DATE", Sequelize.col("createdAt")), "date"],
[Sequelize.literal("SUM(quantity * price)"), "summ"],
"price",
"quantity",
"product_id"
],
group: [Sequelize.fn("DATE", Sequelize.col("createdAt"))],
transaction
});
}
);
错误
Error: column "ProductsOfOutgoingInvoice.price" must appear in the GROUP BY clause or be used in an aggregate function
当您在查询中选择createdAt时,您会按日期更改它们的名称,这就是为什么它无法对其进行分组的原因。