我创建了一个查询,查看一些交易信息。时间段标准是有条件的 - 在每月 5 日,它需要查看上个月的第 16 天 - 最后一天。每月 20 日,需要查看当月 1-15 日。它会自动运行。Stack Overflow 上的一位绅士或女士给了我以下存储过程供我使用,它非常有效:
DECLARE @today SMALLDATETIME, @start SMALLDATETIME, @end SMALLDATETIME;
SET @today = DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP));
SET @start = DATEADD(DAY, 1-DAY(@today), @today);
SET @end = DATEADD(DAY, 15, @start);
IF DATEPART(DAY, @today) <= 15
BEGIN
SET @start = DATEADD(MONTH, -1, @end);
SET @end = DATEADD(DAY, 1-DAY(@today), @today);
END
SELECT ... WHERE h.billed_date >= @start AND h.billed_date < @end;
现在,他们希望将其转换为可以从 3rd 方数据集成工具访问的视图。谷歌告诉我视图不能调用 SQL Server 中的存储过程。他们的 DBA 表示,整个查询也可以转换为存储过程。如何将查询转换为 SP,以便数据集成工具可以访问它?这是查询的简化版本。
SELECT
c.customer_name
, cc.category_name
, h.acct_bal
FROM
customer c
inner join htransactions h on c.customer_id = h.customer_id
left outer join customer_category cc on cc.category_id = c.category_id
WHERE
h.billed date >= @start
AND h.billed date < @end
谢谢。我是一名试图在 SQL 方面做得更好的业务分析师。我的基础查询 SQL 越来越强大。我需要过渡到学习更多关于变量和存储过程的知识。