2013-10-10 45 views
0

我有一个显示以下信息的表格:使用表中的数据创建汇总表。

order# orderdate Company Itemno itemdesc sales qty price location ref# dept.  discount approvedstatus ordertype subrent 

AH123 01/23/2013 HRV T1456286 dog leash T  50  10.00  LA   NR  ACESSORIES 0.00  APPROV  
AH123 01/23/2013 HRV T1456286 dog bone T  10  10.00  LA   AF  ACESSORIES 0.00  APPROV   O    F 
TV1245 05/25/2013 T&T T54895  staples    5  10.00  AB   ARC  SUPPLIES  0.00  APPROV   O    F  
TV1645 05/25/2013 T&T T54895  paper    10  20.00  AB   ARC  SUPPLIES  0.00  APPROV   O    F 

对于这个表我想获得一个汇总表,它会给我提供以下信息:

Location  Rev  Non-Rev 
LA   100.00  500.00 
AB   250.00  0.00 

为了也就是说,如果ref#表示'NR',则基于位置的total_Price将只进入Non-Rev,否则将进入REV列。

我已经尝试过将所有内容都插入到临时表中,然后使用case语句,但是我无法使用CASE当参考#<>'NR'SUM(price_qty),因为它需要我通过ref#以及创建比我实际需要更多的列。

任何帮助!

回答

1

你是非常接近:

SELECT Location, 
     SUM(CASE WHEN [ref#] = 'NR' THEN price_qty END) Rev, 
     SUM(CASE WHEN [ref#] <> 'NR' THEN price_qty END) [Non-Rev] 
FROM YourTable 
GROUP BY Location 
0

不知道我跟随,但我认为你可以使用派生表,这将是你的细节加上派生的转速和非转列,然后从总结那。 类似于:

select 
col1, 
... 
sum(NonRev), 
sum(rev) 
from 
(
select Col1, 
..., 
case when ref# <> 'NR' then price_qty else 0 end as NonRev, 
case when ref# = 'NR' then price_qty else 0 end as rev 
from 
yourtable 
) t1 
group by 
col1, 
...