2013-04-10 72 views
0

我有一個簡單的查詢: -如何爲當前月份數據添加一列到多月查詢?

SELECT * 
FROM dbo.NGPCostPosition 

返回下面的數據: -

enter image description here

我想嘗試並顯示剛剛當月同時還具有訪問權限的總成本到所有其他數據,所以也許一個新的專欄稱爲當前月份,只會填入屬於該類別的項目?

這樣做的最好方法是什麼?

歡迎您的意見和建議。

回答

1

這應該在查詢中添加一個額外的列,只顯示當前月份的總費用。

SELECT 
    *, 
    CASE 
     WHEN 
      DATEPART(MOTNH, TranDate) = DATEPART(MONTH, GETDATE()) AND 
      DATEPART(YEAR, TranDate) = DATEPART(YEAR, GETDATE()) 
     THEN TotalCost 
     ELSE 0 
    END CurrentMonthCost 
FROM dbo.NGPCostPosition 
+0

非常感謝。 – user1086159 2013-04-10 15:53:55

0

你可以列添加到您的查詢,像這樣:

 Select *, 
CASE WHEN 
    datepart(mm, getdate()) == datepart(mm, TranDate) 
    and datepart(yy, getdate()) == datepart(yy, tranDate) 
    then TotalCost 
else 0 
end as CurrentMonthTotalCost 

然後總結說某處在您的工作表。您也可以使用日期格式(因爲他們是有點密碼的,我不喜歡這些爲你比較什麼):

 Select *, 
    CASE 
WHEN CONVERT(VARCHAR(7), GETDATE(), 111) == CONVERT(VARCHAR(7), TRANDATE, 111) 
THEN TotalCost 
ELSE 0 
End as CurrentMonthTotalCost 
0

試試這個:

SELECT doctype, projectNo, CostCat, [all other columns etc.], 
    (Select Sum(Quantity * UnitCost) From NGPCostPosition 
    Where transDate >= DateAdd(month, 
         datediff(month,0,p.Transdate), 0) 
     And transDate < DateAdd(month, 
         datediff(month,0, p.Transdate), 31)) MonthlyTotal  
FROM NGPCostPosition p 
相關問題