4
product saletype qty
-----------------------------
product1 regular 10
product1 sale 1
product1 feature 2
私は上記の販売表を持っており、製品は3つの異なる方法(通常価格、販売価格、または機能価格)のうちの1つを販売することができます。同じ表の他の特定の行のみから特定の行のみを集計しますか?
タイプに関係なく、すべての販売は正規に蓄積されますが、販売と機能も独自の「saletype」に蓄積されます。したがって、上記の例では、合計10商品(通常7、販売1、機能2)を販売しています。
可能な限り効率的に他の2つの列を差し引いた正規量と、他のsaletypeも返したいと思います。
create table query_test
(product varchar(20), saletype varchar(20), qty int);
insert into query_test values
('product1','regular',10),
('product1','sale',1),
('product1','feature',2)
select
qt.product,
qt.saletype,
CASE WHEN qt.saletype = 'regular' THEN sum(qt.qty)-sum(lj.qty) ELSE sum(qt.qty) END as [qty]
from
query_test qt
left join
(
select product, sum(qty) as [qty]
from query_test
where saletype in ('sale','feature')
group by product
) lj on lj.product=qt.product
group by
qt.product, qt.saletype;
...私は後にしています何を得ている:私は基本的に同じ情報を照会することよりも、もっと良い方法がなければならないような気がし
product saletype qty
-----------------------------
product1 feature 2
product1 regular 7
product1 sale 1
しかし、ここでは、私は現在、それをやっている方法です二度。