2017-07-14 31 views
0

我想有這個+3申請時paymentterm如果小於45SUBSTRING與條件

我當前的代碼是:

SELECT 
    [course_title], 
    sblPOAmount, 
    SBLInvoiceDate, 
    paymentTerm, 
    DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) 
FROM 
    [A_Sys].[dbo].[Eventtbl] 
WHERE 
    DATENAME(MONTH, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) = 'June' 
    AND DATENAME(YEAR, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) = '2017' 
# 的額頭聲明(摘要)

SELECT 
SUM(sblPOAmount) AS totalPOAmt, 
case 
    when paymentTerm = '45 Days' 
    then DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) 
    else DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 0, SBLInvoiceDate)) 
end 
FROM 
[A_Sys].[dbo].[Eventtbl] 
WHERE DATENAME(MONTH, DATEADD(day,SUBSTRING(paymentTerm, 1, 2)+3,SBLInvoiceDate))='June' 
AND DATENAME(YEAR, DATEADD(day,SUBSTRING(paymentTerm, 1, 2)+3,SBLInvoiceDate))='2017' 
Group By paymentTerm,SBLInvoiceDate 

目前,我不能夠通過

由於總結到組 #

當前輸出: + ----- + --- + | 10.60 | 23 | | 0.00 | 24 | | 10.50 | 14 | + --------- +

預期輸出: 只是21.10

+2

您正在使用哪個數據庫? –

+1

請發佈樣本數據和預期輸出 – maSTAShuFu

+0

microsoft sql server .. @NigelFds –

回答

1

你正在尋找一個case語句...基礎上

SELECT 
    [course_title], 
    sblPOAmount, 
    SBLInvoiceDate, 
    paymentTerm, 
    case 
     when paymentTerm < 45 then DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) 
     else DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2), SBLInvoiceDate)) 
    end 
FROM 
    [A_Sys].[dbo].[Eventtbl] 
WHERE 
    DATENAME(MONTH, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) = 'June' 
    AND DATENAME(YEAR, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) = '2017' 

編輯

SELECT 
    [course_title], 
    sum(sblPOAmount), 
    SBLInvoiceDate, 
    paymentTerm, 
    case 
     when paymentTerm < 45 then DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) 
     else DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2), SBLInvoiceDate)) 
    end 
FROM 
    [A_Sys].[dbo].[Eventtbl] 
WHERE 
    DATENAME(MONTH, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) = 'June' 
    AND DATENAME(YEAR, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) = '2017' 
GROUP BY 
    [course_title], 
    SBLInvoiceDate, 
    paymentTerm, 
    case 
     when paymentTerm < 45 then DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2) + 3, SBLInvoiceDate)) 
     else DATENAME(Day, DATEADD(day, SUBSTRING(paymentTerm, 1, 2), SBLInvoiceDate)) 
    end 
+0

是的,這就是我正在尋找的!我仍然有一些問題,我無法總結sblPOAmount的價值。我想我會修改我的問題 –

+0

@kelvinfoo我不知道你的意思,但我已經提供了一個修改我的答案,可能適合你 – scsimon

+0

嗨西蒙..我的意思是總結結果在一起。目前輸出我會在問題中更新.. –