2016-10-09 2 views
1

Wie kann ich eine Abfrage wie folgt mit Sequelize erstellen?Sequelize Summe zwischen zwei Spalten in Modell

SELECT name, region, SUM(((COALESCE(base_income, 0) + COALESCE(user_taxes, 0))) AS total_sal FROM user GROUP BY name, region; 
+0

Sie direkt Abfrage abfeuern kann, haben Sie einen Blick doc http://docs.sequelizejs.com/en/latest/docs/raw-queries/ –

+0

@ArifKhan Ja, ich kann rohe Abfrage verwenden, aber das wäre der letzte Ausweg, wenn ein ORM verwendet wird. Was wäre der richtige Weg mit Sequelize-Methoden? –

Antwort

2

OK, so folgt die Lösung für die oben genannten RAW SQL-Abfrage.

user.findAll({ 
    attributes: ['name', 'region', [sequelize.fn('SUM', (sequelize.fn('COALESCE', (sequelize.col('base_income')), 0), sequelize.literal('+'), sequelize.fn('COALESCE', (sequelize.col('user_taxes')), 0))), 'total_sal']], 
    group: ['name', 'name']}) 

Wir müssen sequelize.literal verwenden, um einen Operator zwischen Abfrage zu platzieren. Hoffe das hilft.

0

Obwohl es eine alte Post ist, lief ich diese jetzt zweimal an. So würde Ich mag meine Lösung teilen:

user.findAll({ 
    attributes: [ 'name', 'region', 
    [ sequelize.literal(
     'COALESCE(base_income, 0) + COALESCE(user_taxes, 0)' 
    ), 'total_sal' 
    ] 
    ], 
    group: ['name', 'name'] 
}) 
Verwandte Themen