使用表中的数据创建汇总表。

时间:2013-10-10 16:24:44

标签: sql sql-server sql-server-2008

我有一个表格,显示以下信息:

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对它进行分组#以及创建比实际需要更多的列。

任何帮助!!!

2 个答案:

答案 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,
...