第一个表是我的输入,并期望输出像第二个表而没有使用左连接。 这是表格数据
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
预期输出
答案 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;