0

我有 2 张桌子。一、销售表:

 Salesid      Amount     Productid      Monthid
   20           10         1             201307
   15           25         1             201301
   40           20         5             201303

注意:超过 1000 行。

其次,我有一个产品表:

 Productid     Description       Product_elemid

    1            AAA                  24
    2            BBB                  57           
    5            CCC                  23
    1            AAA_ACE              25

注意:大约 100 行。

现在,我想显示这两个表中的一些数据。这是我目前拥有的:

Select p.description 

       case ( when s.monthid between 201301 and 201307 then sum(s.amount) else 0 end) 
       case ( when s.monthid between 201303 and 201305 then sum(s.amount) else 0 end) 
from sales s, product p
where s.productid = p.productid 
and p.productid in ('1, '2', '5')
group by p.description

我得到一个包含 3 列的表:

p.description         case 1 values             case 2 values

到现在为止还挺好。现在我还想有另一列来告诉我这两种情况的值的差异。

我可以在案例陈述中写这个,还是有更好的方法?

注意:在这里执行自连接对我来说是不可取的,因为它有很多行,因此显示时间太长。

谢谢。

4

1 回答 1

1

您可以将原始语句变成子查询:

Select description, case_1, case_2, case_1 - case_2
from
 (Select p.description as description

   case ( when s.monthid between 201301 and 201307 then sum(s.amount) else 0 end) as case_1
   case ( when s.monthid between 201303 and 201305 then sum(s.amount) else 0 end) as case_2
 from sales s, product p
 where s.productid = p.productid 
 and p.productid in ('1, '2', '5')
 group by p.description
)
于 2013-08-12T18:24:26.810 回答