我有一个表格,显示以下信息:
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 WHEN ref#<>'NR'SUM(price_qty),因为它需要我通过ref对它进行分组#以及创建比实际需要更多的列。
任何帮助!!!
答案 0 :(得分: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
答案 1 :(得分:0)
我不确定是否遵循,但我认为您可以使用派生表,这将是您的详细信息加上您派生的rev和非rev列,然后从中汇总。 类似的东西:
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,
...