2016-10-09 2 views
1

このようなクエリを後続処理で作成するにはどうすればよいですか?モデル内の2つの列の和を連続化する

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

あなたが直接クエリを発射することがあり、見た目ドキュメントhttp://docs.sequelizejs.com/en/latest/docs/raw-queries/ –

+0

@ArifKhanを持ってください。うん、私は生のクエリを使用することができますが、最後の手段はORMを使用するときになります。 Sequelizeメソッドを使用する正しい方法は何ですか? –

答えて

2

上記のRAW SQLクエリの解決方法は次のとおりです。

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']}) 

クエリの間に演算子を配置するには、sequelize.literal inorderを使用する必要があります。お役に立てれば。

0

古い投稿ですが、これを2度実行しました。だから私は私の解決策を共有したい:

user.findAll({ 
    attributes: [ 'name', 'region', 
    [ sequelize.literal(
     'COALESCE(base_income, 0) + COALESCE(user_taxes, 0)' 
    ), 'total_sal' 
    ] 
    ], 
    group: ['name', 'name'] 
}) 
関連する問題