2014-02-18 27 views
0

說我有我的SQL此查詢...SQL零不會出現在查詢

DECLARE @earninglist varchar(1000) 
     Set @earninglist=STUFF((SELECT DISTINCT '],[' 
      +LTRIM([Description]) FROM 
      PR_Earnings 
      ORDER BY '],[' + LTRIM([Description]) 
         FOR XML PATH('') 
         ), 1, 2, '')+']' 


DECLARE @chargeslist varchar(1000) 
    Set @chargeslist=STUFF((SELECT DISTINCT '],[' 
      +LTRIM([ChargesTypeName]) FROM 
      PRChargesAdvancesTypes 
      ORDER BY '],[' + LTRIM([ChargesTypeName]) 
         FOR XML PATH('') 
         ), 1, 2, '')+']' 
    Declare @sql varchar(max) 
    Set @sql= 
    'Select Name,BranchId,Basic,'[email protected]+',Overtime,[Paid Hol],[Sunday OT], 
    [Gross Amount],[WithTax],[SSS Cont],[SSS Loan],[Pagibig Cont],[Pagibig Loan] 
    ,Medicare,'[email protected]+',[Total Ded],[Net with OD],[Net no OD] 
    from 
    (
     Select distinct 
     pr_employees.Fullname as Name 
     ,PR_Employees.BranchID,PR_payroll.BasicPay as Basic 
     ,PR_Empearnings.EarningAmt 
     ,PR_Earnings.Description 
     ,pr_payroll.Overtime 
     ,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 ('[email protected] +') 
) as pvt 
    pivot 
    (
    MAX([Credit]) 
    FOR [ChargesTypeName] IN ('[email protected] +') 
) as pvt2 
    ;' 
    EXEC (@sql) 

的這個輸出是:

Name BranchID  Basics  Allowance Cola incentives 
name1  1  5000     200  250 
name2  2  3000  250     100 

有沒有辦法,我可以把零而不是空白的津貼和可樂?

請幫忙急需它謝謝..

+0

哪個數據庫? –

+0

我只是做一個示例查詢和一個示例輸出.... – user3312649

+0

我只是說,查詢是絕對不可讀的..它並沒有幫助讓人們回答你的問題 – NickyvV

回答

1

嘗試;

ISNULL(MAX([EarningAmt]),0) 
2

你想要做什麼是一個0替換EarningAmtNULL值。
可以使用ISNULL實現此目的:

ISNULL(MAX([EarningAmt]),0) 

基本上,如文檔中所提及的,它:

替換NULL與指定的替換值。

其中replacement value你的情況是0

+0

sql server說:'Isnull不是聚合函數的一部分'.. – user3312649