2017-05-04 3 views
2

条件を満たしながらもmysqlのエラーが発生するすべての行の合計を2つの列の値で取得しようとしています。後、私は私の結果を達成するため、いくつかの例を試してみてくださいしかし、私はそれが正しい方法かそうでないかわからない:MySQL:3列目に代わって2列の乗算を行う列の合計を取得

表:store_stocks私はちょうど乗算量の在庫数量をカウントする

enter image description here

付加価値税(VAT)に基づく数量、非VATおよび総株式数。

SELECT sum(qty*sale_price) as total_stock, 
(select sum(qty*sale_price) from store_stocks where vat_status = 0 and store_id = 8) as non_vat_stock, 
(select sum(qty*sale_price) from store_stocks where vat_status = 1 and store_id = 8) as with_vat_stock 
FROM `store_stocks` where store_id = 8 group by store_id 

とその表示結果:私は、クエリだと思うので

enter image description here

は、いずれかが、これを達成するための任意の他の方法がある私に言うことができる

は、私はちょうどそのクエリを作成しましたちょっと複雑です。サブクエリでどこを使用しているのか、また laravel eloquentにこのクエリを実装する必要があるたびに、

答えて

1

あなたはそれだけで特定のレコードを要約するためにsum()内の条件を使用することができ、サブクエリを必要としない:

SELECT sum(qty*sale_price) as total_stock, 
     sum(if(vat_status = 0, qty*sale_price, 0)) as non_vat_stock, 
     sum(if(vat_status = 1, qty*sale_price, 0)) as with_vat_stock 
FROM `store_stocks` where store_id = 8 group by store_id 

あなたにもif()機能の代わりにcase表現を使用することができます。

+0

2行目の 'non_vat_stock'として sum(with(vat_status = 1、qty * sale_price、0)as with_vat ')が表示されません。 –

+0

')'が2回閉じられませんでした。しかし、plsは単にソリューションをコピーして貼り付けるだけでなく、それを理解しようとします。 – Shadow

+0

wow..great!.... –

関連する問題