期望输出没有使用左连接

时间:2016-08-04 12:10:14

标签: sql sql-server

第一个表是我的输入,并期望输出像第二个表而没有使用左连接。 这是表格数据

declare @table table 
(customer_id int,
indicator bit,
salary numeric(22,6)
,netresult numeric(22,6))

INSERT INTO @table (
    customer_id
    ,indicator
    ,salary
    )
VALUES 
(1,1,2000),
(1,1,3000),
(2,1,1000),
(1,0,500),
(1,1,5000),
(2,1,2000),
(2,0,100)

select * from @table order by customer_id,indicator desc

我在下面尝试了它的方法。还有更好的选择吗?

SELECT a.customer_id
    ,a.indicator
    ,a.salary
    ,netresult=p_salary-(2*n_salary)
FROM (
    SELECT customer_id
        ,indicator
        ,salary
        ,sum(salary) OVER (PARTITION BY customer_id) p_salary
    FROM @table
    ) a
LEFT JOIN (
    SELECT customer_id
        ,indicator
        ,salary
        ,sum(salary) OVER (PARTITION BY customer_id) n_salary
    FROM @table
    WHERE indicator = 0
    ) b ON a.customer_id = b.customer_id
    order by customer_id,indicator desc

预期输出

enter image description here

2 个答案:

答案 0 :(得分:3)

我想你想要这个:

latchA.countDown();

不需要加入。

答案 1 :(得分:1)

用数学

select t.customer_id, t.indicator, t.salary
     , sum((( t.indicator * 2) -1) * salary) over (partition by customer_id) as netresult
from @table t;