現在我在我的sql查詢中使用臨時表,但我想使用Partition By函數。使用OVER(PARTITION BY)而不是Group
我的臨時表的查詢如下:
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;
我得到預期的結果很好,但我想用分區功能來執行此操作,我試過了,但結果是不準確的 -
select
NAME,
EMPID,
sum(Salary) over (partition by AmtPayer) as Total
from dbo.Candidate
輸出是:
Vivek 0001 300.00 Vivek 0001 300.00 Vivek 0001 6200.00 Vivek 0001 6200.00 Vivek 0001 6200.00
但我需要:
Vivek 0001 6200.00 300.00
請縮進代碼,以便它顯示了作爲代碼和格式,它有一定程度的理智......這真的很難閱讀。 –
如果你想分組結果,你需要使用group by。窗口函數的全部目的不是**不「減少」結果集。 –
[將多個子查詢中的多個結果合併爲一個逗號分隔值]的可能重複(http://stackoverflow.com/questions/111341/combine-multiple-results-in-a-subquery-into-a-single-逗號分隔值) –