制作一个接受开始日期和结束日期的 UDF。并返回

Posted

技术标签:

【中文标题】制作一个接受开始日期和结束日期的 UDF。并返回【英文标题】:Make a UDF accepting start date and end date. And returning 【发布时间】:2014-10-12 17:57:43 【问题描述】:

写一个UDF接受订单日期和发货日期。使 UDF 返回发生在用户输入的订单日期和发货日期之间的销售订单数量(使用 Vista 信用卡)。

(SQL Server 2012 中 AdventureWorks2012 中的表为 Sales-SalesOrderHeader)。

看来我必须参考Sales-CreditCard 表才能获得确切的卡名,因为Sales.SalesOrderHeader 表中没有提供该名称:

CREATE FUNCTION fx_SalesNmbr INT 
   (SELECT  OrderDate, ShipDate 
    FROM   Sales.SalesOrder  
    WHERE  CreditCardID = Vista (Maybe is should be a function @ Creditcardname)

有人可以告诉我它是怎么做的吗?

【问题讨论】:

【参考方案1】:
CREATE FUNCTION dbo.fx_SalesNmbr 
(
  @pOrderDate DATETIME, 
  @pShipDate DATETIME,
  @pCardType NVARCHAR(50)
)
RETURNS INT
AS
BEGIN
  DECLARE @result INT
  SELECT
    @result = COUNT(*)
  FROM
    Sales.SalesOrderHeader AS soh    
    JOIN Sales.CreditCard AS cc 
      ON soh.CreditCardID = cc.CreditCardID
  WHERE
    cc.CardType = @pCardType 
    AND soh.OrderDate = @pOrderDate 
    AND soh.ShipDate = @pShipDate

  RETURN @result  
END  
GO

SELECT dbo.fx_SalesNmbr ('2001-07-01', '2001-07-08', 'Vista')

【讨论】:

_____ _ _ __ |_ | | ___ | | | | |_ _ _ | | | | '| | '| | | . | | | |_| |_|_|_,|_|_|_,_| |_| |___|___|谢谢你,约翰斯。我已经运行了脚本,它可以工作。 'JOIN'部分是我需要进入和学习的地方。我很欣赏这种洞察力。 没问题@Eda。如果您对此感到满意,您可能会接受它作为答案。

以上是关于制作一个接受开始日期和结束日期的 UDF。并返回的主要内容,如果未能解决你的问题,请参考以下文章

返回任何一年的开始和结束[重复]

如何使用Dojo的DatePicker控件制作联动日期选择器

SQL 日期过滤器:当开始日期 = 结束日期时返回结果

Office 365 API为整天事件返回错误的开始和结束日期时间

SQL Server:结合 SELECT 和相关的 UDF 结果

对于每个 ID,返回 r 中开始列的最早日期和结束列的最新日期