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

换句话说,基于位置的 total_Price 只有在 ref# 显示“NR”时才会进入 Non-Rev,否则它将进入 REV 列。

我已经通过将所有内容插入临时表然后使用 case 语句来尝试这个,但我不能使用 CASE WHEN ref#<>'NR' SUM(price_qty) 因为它要求我按 ref# 对其进行分组以及创建比我实际需要的更多列。

任何帮助!

4

2 回答 2

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
于 2013-10-10T16:30:01.827 回答
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,
...
于 2013-10-10T16:31:38.807 回答