SQL函数-如何添加DateFrom和DateTo(日期范围)参数?

时间:2018-07-19 11:53:07

标签: sql sql-server

在我的主要查询中,我得到每个日期每个客户的费用,如下所示:

10.00 - James - 01/01/2018
30.00 - John -  15/05/2018

所以我的日期过滤器如下*:

where DATEcolumn >='01/01/2018'
and DATEcolumn   <='30/06/2018'

然后我想要一个函数根据我的日期范围给我这些费用的总和。结果如下:

10.00 - James - 01/01/2018 - 40.00
30.00 - John -  15/05/2018 - 40.00

我知道我可以通过子查询来获取,但是不幸的是我需要通过一个函数来获取,因为我使用的应用程序有局限性。我所要求的可能无法实现,但以为我会要求。谢谢

*抱歉,我在解释DATE列时出错。这是一个日期列,而不是两个。

2 个答案:

答案 0 :(得分:2)

使用内联表值函数:

CREATE FUNCTION dbo.ufnCostByRanges (
    @DateFrom DATE,
    @DateTo DATE)
RETURNS TABLE RETURN
    SELECT
        P.Price,
        P.Name,
        P.Date,
        TotalPrice = SUM(P.Price) OVER ()
    FROM
        Prices AS P
    WHERE
        P.Date BETWEEN @DateFrom AND @DateTo

您将其用于:

SELECT
    P.*
FROM
    dbo.ufnCostByRanges ('2018-01-01', '2018-05-01') AS P

答案 1 :(得分:0)

您似乎想要:

select t.*,
       sum(case when dateFrom >= '2018-01-01' and dateTo <= '2018-06-30'
                then costs else 0
           end)
from t;