我有一個簡單的查詢: -如何爲當前月份數據添加一列到多月查詢?
SELECT *
FROM dbo.NGPCostPosition
返回下面的數據: -
我想嘗試並顯示剛剛當月同時還具有訪問權限的總成本到所有其他數據,所以也許一個新的專欄稱爲當前月份,只會填入屬於該類別的項目?
這樣做的最好方法是什麼?
歡迎您的意見和建議。
我有一個簡單的查詢: -如何爲當前月份數據添加一列到多月查詢?
SELECT *
FROM dbo.NGPCostPosition
返回下面的數據: -
我想嘗試並顯示剛剛當月同時還具有訪問權限的總成本到所有其他數據,所以也許一個新的專欄稱爲當前月份,只會填入屬於該類別的項目?
這樣做的最好方法是什麼?
歡迎您的意見和建議。
這應該在查詢中添加一個額外的列,只顯示當前月份的總費用。
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
你可以列添加到您的查詢,像這樣:
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
試試這個:
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
非常感謝。 – user1086159 2013-04-10 15:53:55