지금은 SQL 쿼리에서 임시 테이블을 사용하고 있지만 대신 파티션 별 함수를 사용하고 싶습니다.그룹 대신 OVER (PARTITION BY) 사용
는은 내 임시 테이블 쿼리는 아래와 같습니다 :
drop table #Temp;
create table #Temp
(
NAME varchar(50),
EMPID varchar(50),
SS MONEY,
PP MONEY
);
insert into #Temp
select * From
(
select
p1.NAME,
p1.EMPID,
case when p1.AmtPayer = 'SELF' then sum(p1.Salary) else 0 end as S,
case when p1.AmtPayer = 'MANAGER' then sum(p1.Salary) else 0 end as P
from Candidate p1
group by p1.Name, p1.EMPID, p1.AmtPayer
) as P;
select
t.NAME,
t.EMPID,
sum(t.SS) as 'SELF PAID',
sum(t.PP) as 'PARTY PAID'
from #Temp t
group by t.NAME, t.EMPID;
나뿐만 아니라 예상 된 결과를 얻고있다하지만 난 그것을 시도, 파티션 기능을 사용하여이 작업을 수행하려는하지만 결과는 정확하지 않습니다 -
Vivek 0001 300.00 Vivek 0001 300.00 Vivek 0001 6200.00 Vivek 0001 6200.00 Vivek 0001 6200.00
하지만이 필요합니다 :
select
NAME,
EMPID,
sum(Salary) over (partition by AmtPayer) as Total
from dbo.Candidate
출력은
Vivek 0001 6200.00 300.00
가 표시되도록 코드를 들여하세요 코드와 포맷으로 어느 정도의 온전함으로 포맷하십시오 ... 이것을 읽는 것은 정말로 어렵습니다. –
결과를 그룹화하려면 group by를 사용해야합니다. 창 함수의 전체 목적은 ** 결과 집합을 "감소시키지"않습니다 **. –
가능한 중복 [하위 쿼리의 여러 결과를 하나의 쉼표로 구분 된 값으로 결합] (http://stackoverflow.com/questions/111341/combine-multiple-results-in-a-subquery-into-a-single- 쉼표로 구분 된 값) –