0

我有一个简单的查询:-

SELECT *
FROM dbo.NGPCostPosition

这将返回以下数据:-

在此处输入图像描述

我想尝试显示当月的总成本,同时仍然可以访问所有其他数据,所以也许一个名为当月的新列只能由属于该类别的项目填充?

做这个的最好方式是什么?

欢迎和赞赏所有建议。

4

3 回答 3

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
于 2013-04-10T15:43:44.663 回答
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
于 2013-04-10T15:36:57.527 回答
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
于 2013-04-10T15:37:44.813 回答