2017-01-30 14 views
-1

私は複数の店舗の売上高を引き出してサマリーとして表示するためのステートメントを書くのに苦労しています。私は必要なすべての情報を得るためにここに4つのテーブルを問い合わせています。特定のタイプの製品の販売を引き出すまではうまくいきます。製品タイプ別の売上高とストアをmySQLに集計

HERESに私の声明:

SELECT s.name, ROUND(sum(od.price*od.quantity),2) as total, SUM(od.quantity) as items, ROUND(sum(od.price*od.quantity),2)/SUM(od.quantity) as aiv, COUNT(o.serial) as orders, ROUND(sum(od.price*od.quantity),2)/COUNT(o.serial) as aov, SUM(CASE WHEN p.type = 'B' THEN ROUND(sum(od.price*od.quantity),2) ELSE 0 END) as bikesales FROM stores as s 
JOIN orders as o ON s.name = o.store 
JOIN order_detail as od ON o.serial = od.orderid 
JOIN products as p ON od.productid = p.id 
WHERE s.live!=0 AND o.date BETWEEN '2015-01-01' AND '2017-12-31' AND (o.status=1 OR o.status=2 OR o.status=3 OR o.status=4) AND od.status=1 
GROUP BY s.name 
ORDER BY s.name 

私は、しかし、それは店舗名のグループ化のために必要だ、それは私がInvalid use of group functionで取得エラーとして正しく動作から、これを防止することだグループだと思います。

商品タイプ別に選択したセクションは次のとおりです。SUM(CASE WHEN p.type = 'B' THEN ROUND(sum(od.price*od.quantity),2) END) as bikesales - 私はバイクの販売総額を取得し、bikesalesと表示しようとしています。

これは可能ですか?

+0

がhttp://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-whatを参照してください。 -sems-to-me-to-be-a-very-simple-sql-query – Strawberry

答えて

0

それは巣サム機能に違法だ、これを試してみてください。

SUM(CASE WHEN p.type = 'B' THEN ROUND(od.price*od.quantity,2) ELSE 0 END) as bikesales /*Without other ROUND(sum(od.price*od.quantity),2) */ 
関連する問題