Sequelize 中的聚合和分组问题

问题描述 投票:0回答:1

我的任务是乘以数量 * 价格字段,并选择“价格”、“数量”、“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
node.js postgresql sequelize-typescript
1个回答
0
投票

当您在查询中选择createdAt时,您会按日期更改它们的名称,这就是为什么它无法对其进行分组的原因。

© www.soinside.com 2019 - 2024. All rights reserved.