2016-04-05 48 views
0

SQL ile çok fazla expiriance yok ve bu sorgu üzerinde kafamı kırmaya çalışıyorum. 3 tablolarım var: Projeler, Hesap Makinesi ve kısmiBilgi (not: 'k', 'l', 'm' vb eklediğimiz kodda gördüğünüz 'hesap makinesi' sütunları gerçektir ... onlara bu isimleri vermedim ...). SQL sorgusu: Sola topla işlevini kullanırken NULL olmamalıdır NULL değerleri

sorgu

iyi çalışıyor ama bölüm i agrega işlevinden bekliyorum değerlerin ('sumofTotal' sütunu) olarak boş değerler dönen ve ve bunlar boş olmamalıdır. Birisi, sorgudaki hatayı işaret ederse minnettar olurum.

SELECT Projects.SpCall,Projects.CustName,Projects.CustNumber 
,Projects.ReceiveDate,Projects.StartDate,Projects.ProjectType 
,Calculator.AN,Projects.Professional,Projects.PmUserName 
,Projects.AcountManager,Projects.CrmCallNum,Projects.ProjectCategory 
,Projects.CallNum,Projects.ContactName,Projects.ContactPhone 
,Projects.ContactEmail,Projects.HiddenNote,Projects.RowColor 
, Projects.HeaderCellText, 
SUM(Calculator.K + Calculator.L + Calculator.M + Calculator.N + Calculator.AD + Calculator.AR) AS sumofTotal 
,partialBilling.Ammount FROM Projects LEFT JOIN Calculator ON Projects.SpCall=Calculator.AQ 
    LEFT JOIN partialBilling ON Projects.SpCall = partialBilling.spCall 
    WHERE PmUserName= 'JOHN DOE'AND OpertionalStatus 
    <> 'Billed' AND OpertionalStatus<> 'Finished' AND 
    OpertionalStatus<> 'Passed To Billing' AND OpertionalStatus<> 'Scanning' 
    AND OpertionalStatus<> 'Ended' 
    AND OpertionalStatus<> 'Green Billing' 
    AND (GeneralStatus= 'Passed To Project Manager' 
    OR GeneralStatus= 'Astrategic Project') 
    GROUP BY Projects.SpCall,Projects.CustName,Projects.CustNumber 
    ,Projects.ReceiveDate,Projects.StartDate,Projects.ProjectType 
    ,Calculator.AN,Projects.Professional,Projects.PmUserName 
    ,Projects.AcountManager,Projects.CrmCallNum,Projects.ProjectCategory 
    ,Projects.CallNum,Projects.ContactName,Projects.ContactPhone 
    ,Projects.ContactEmail,Projects.HiddenNote,Projects.RowColor 
    , Projects.HeaderCellText,partialBilling.Ammount; 
+2

sorunu basitleştirmek ve bu herkes (sizi incl) anlamak için daha kolay olacaktır o. Çok daha az sütun, bazı örnek tablo verileri ve beklenen sonuç. – jarlh

+0

tnx, üzerinde çalışıyor. birkaç minuet. Bu sorunu çözen – jonathana

cevap

1
yerine tescilli IFNULL iyi kullanılması Standart SQL COALESCE ait

:

SUM(COALESCE(Calculator.K,0) + COALESCE(Calculator.L,0), ...` 

Ya da belki biraz daha verimli:

SUM(COALESCE(Calculator.K,0)) + SUM(COALESCE(Calculator.L,0)), ...` 
+0

çok teşekkür ederim! – jonathana

1

deneyin

SUM(IFNULL(Calculator.K,0) + ... + IFNULL(Calculator.AR,0)) AS sumofTotal 
0

Sen column_name yerine ifnull('column_name' , '') gibi bir ifade kullanabilirsiniz() IFNULL kullanmak.