Sql 代码使用CASE WHEN和Group By,而不是pivot和unpivot。它只适用于一条记录,但如果我有多条记录呢?如果一条记录已排序,则其他记录将自动排序。SortKey列表示整个表的排序。如果不是这样,请解释你的情况 Branch Payrol

Sql 代码使用CASE WHEN和Group By,而不是pivot和unpivot。它只适用于一条记录,但如果我有多条记录呢?如果一条记录已排序,则其他记录将自动排序。SortKey列表示整个表的排序。如果不是这样,请解释你的情况 Branch Payrol,sql,sql-server,Sql,Sql Server,代码使用CASE WHEN和Group By,而不是pivot和unpivot。它只适用于一条记录,但如果我有多条记录呢?如果一条记录已排序,则其他记录将自动排序。SortKey列表示整个表的排序。如果不是这样,请解释你的情况 Branch Payroll Items AAA 0 BasicPay AAA 0 Overtime AAA 0 Paid Hol AAA 0 Sunday OT AAA 0


代码使用CASE WHEN和Group By,而不是pivot和unpivot。它只适用于一条记录,但如果我有多条记录呢?如果一条记录已排序,则其他记录将自动排序。SortKey列表示整个表的排序。如果不是这样,请解释你的情况 Branch Payroll Items AAA 0 BasicPay AAA 0 Overtime AAA 0 Paid Hol AAA 0 Sunday OT AAA 0 Thirteen MO AAA 0 Gross Amount AAA 0 WithTax AAA 0 SSS Cont AAA 0 SSS Loan AAA 0 Pagibig Cont AAA 0 Pagibig Loan AAA 0 Medicare AAA 0 Total Ded AAA 0 Net with OD AAA 0 Net no OD AAA 0 CASH ADVANCE AAA 0 MEAL AAA 0 Cola AAA 0 Incentives Items AAA BasicPay 0 CASH ADVANCE 0 Cola 0 Gross Amount 0 Incentives 0 MEAL 0 Medicare 0 Net no OD 0 Net with OD 0 Overtime 0 Pagibig Cont 0 Pagibig Loan 0 Paid Hol 0 SSS Cont 0 SSS Loan 0 Sunday OT 0 Thirteen MO 0 Total Ded 0 WithTax 0 select * from( Select unpivots.Branch,items,items2 from( Select BranchId as testid,Coalesce([BasicPay],0)[BasicPay],Coalesce(Overtime,0)overtime,coalesce([Paid Hol],0)[Paid Hol],coalesce([Sunday OT],0)[Sunday OT],Coalesce([Thirteen MO],0)[Thirteen MO], coalesce([Gross Amount],0)[Gross Amount],coalesce([WithTax],0)[WithTax],coalesce([SSS Cont],0)[SSS Cont],coalesce([SSS Loan],0)[SSS Loan],coalesce([Pagibig Cont],0)[Pagibig Cont],coalesce([Pagibig Loan],0)[Pagibig Loan] ,coalesce(Medicare,0)[Medicare],Coalesce([Total Ded],0)[Total Ded],coalesce([Net with OD],0)[Net with OD],Coalesce([Net no OD],0)[Net no OD],coalesce([CASH ADVANCE],0)[CASH ADVANCE],coalesce([MEAL],0)[MEAL],Coalesce([Cola],0)[Cola],coalesce([Incentives],0)[Incentives],Branch from( Select BranchId as testid,Coalesce([BasicPay],0)[BasicPay],Coalesce(Overtime,0)overtime,coalesce([Paid Hol],0)[Paid Hol],coalesce([Sunday OT],0)[Sunday OT],Coalesce([Thirteen MO],0)[Thirteen MO], coalesce([Gross Amount],0)[Gross Amount],coalesce([WithTax],0)[WithTax],coalesce([SSS Cont],0)[SSS Cont],coalesce([SSS Loan],0)[SSS Loan],coalesce([Pagibig Cont],0)[Pagibig Cont],coalesce([Pagibig Loan],0)[Pagibig Loan] ,coalesce(Medicare,0)[Medicare],Coalesce([Total Ded],0)[Total Ded],coalesce([Net with OD],0)[Net with OD],Coalesce([Net no OD],0)[Net no OD],coalesce([CASH ADVANCE],0)[CASH ADVANCE],coalesce([MEAL],0)[MEAL],Coalesce([Cola],0)[Cola],coalesce([Incentives],0)[Incentives] from ( Select distinct --pr_employees.Fullname as Name --, PR_Employees.BranchID,PR_payroll.BasicPay as [BasicPay] ,PR_Empearnings.EarningAmt ,PR_Earnings.Description ,pr_payroll.Overtime ,pr_payroll.Period ,Pr_payroll.SundayOT as [Sunday OT] ,Pr_Payroll.PaidHol as [Paid Hol] ,pr_payroll.ThirteenthMonthPay as [Thirteen MO] ,pr_payroll.Grosspay as [Gross Amount] ,pr_payroll.WithHoldingTax as [WithTax] ,pr_payroll.SSSPremium as [SSS Cont] ,pr_payroll.SSSLoan as [SSS Loan] ,pr_payroll.PagibigPremium as [Pagibig Cont] ,pr_payroll.PagibigLoan as [Pagibig Loan] ,pr_payroll.NHIPPremium as Medicare ,pr_payroll.TotalDeductions as [Total Ded] ,pr_Payroll.netpay as [Net with OD] ,pr_payroll.netnoOd as [Net no OD] ,prchargesAdvances.Credit ,prchargesadvancesTypes.ChargesTypeName from pr_employees left join pr_payroll on PR_Employees.EmpID=PR_Payroll.EmpID left join PR_EmpEarnings on PR_Payroll.EmpID=PR_EmpEarnings.EmpID left join PR_Earnings on PR_EmpEarnings.EarningId=pr_earnings.earningid left join PR_Overtime on PR_Overtime.EmpID=PR_Payroll.EmpID left join PRChargesAdvances on PRChargesAdvances.transactiondate=pr_payroll.period and prchargesadvances.empid=pr_payroll.empid left join PRChargesAdvancesTypes on PRChargesAdvances.ChargeTypeID=PRChargesAdvancesTypes.ChargesTypeID where PR_Payroll.Period='8/31/2013' ) as Source pivot ( MAX([EarningAmt]) FOR [Description] IN ([COLa],[Incentives]) ) as pvt pivot ( MAX([Credit]) FOR [ChargesTypeName] IN ([MEAL],[CASH ADVANCE]) ) as pvt2)AS Srck right join PR_Branch on Srck.testID=PR_Branch.BranchID)as src unpivot(items for items2 in ([BasicPay],Overtime,[Paid Hol],[Sunday OT],[Thirteen MO], [Gross Amount],[WithTax],[SSS Cont],[SSS Loan],[Pagibig Cont],[Pagibig Loan] ,Medicare,[Total Ded],[Net with OD],[Net no OD],[CASH ADVANCE],[MEAL],[Cola],[Incentives]))as unpivots )as latestsrc pivot (sum(items) for items2 in ([BasicPay],Overtime,[Paid Hol],[Sunday OT],[Thirteen MO], [Gross Amount],[WithTax],[SSS Cont],[SSS Loan],[Pagibig Cont],[Pagibig Loan] ,Medicare,[Total Ded],[Net with OD],[Net no OD],[CASH ADVANCE],[MEAL],[Cola],[Incentives])) as pvt unpivot(Payroll for Items in ([BasicPay],Overtime,[Paid Hol],[Sunday OT],[Thirteen MO], [Gross Amount],[WithTax],[SSS Cont],[SSS Loan],[Pagibig Cont],[Pagibig Loan] ,Medicare,[Total Ded],[Net with OD],[Net no OD],[CASH ADVANCE],[MEAL],[Cola],[Incentives]))as unpvt pivot (max(payroll) for Branch in ([aaa]))as pvt
CREATE table #Temp (Branch varchar(255),Payroll int, Itemsvarchar(255))    
INSERT INTO #Temp VALUES
('AAA',0,'BasicPay')
,('AAA',0,'Overtime')
,('AAA',0,'Paid Hol')
,('AAA',0,'Sunday OT')
,('AAA',0,'Thirteen MO')
,('AAA',0,'Gross Amount')
,('AAA',0,'WithTax')
,('AAA',0,'SSS Cont')
,('AAA',0,'SSS Loan')
,('AAA',0,'Pagibig Cont')
,('AAA',0,'Pagibig Loan')
,('AAA',0,'Medicare')
,('AAA',0,'Total Ded')
,('AAA',0,'Net with OD')
,('AAA',0,'Net no OD')
,('AAA',0,'CASH ADVANCE')
,('AAA',0,'MEAL')
,('AAA',0,'Cola')
,('AAA',0,'Incentives')
SELECT items, 
       [aaa] 
FROM   (SELECT branch, 
               payroll, 
               items, 
               Row_number() 
                 OVER ( 
                   ORDER BY (SELECT 0)) sortKey 
        FROM   #temp) ABC 
       PIVOT ( Max(payroll) 
             FOR branch IN ([AAA]) ) AS pvt2 
ORDER  BY sortkey 

DROP TABLE #temp 
Items           AAA
BasicPay        0
Overtime        0
Paid Hol        0
Sunday OT       0
Thirteen MO     0
Gross Amount    0
WithTax         0
SSS Cont        0
SSS Loan        0
Pagibig Cont    0
Pagibig Loan    0
Medicare        0
Total Ded       0
Net with OD     0
Net no OD       0
CASH ADVANCE    0
MEAL            0
Cola            0
Incentives      0