我有一个有 37 列的表格。该表是从每日 csv 文件填充的。我需要创建一个仅过滤上个月数据集的视图。过帐日期列是格式为 20131219 的字符串变量。 我有一个函数,它使用日期函数来确定当前月份,然后返回一个包含年份和前一个月的字符串。 此查询返回我需要的数据集,但我无法弄清楚如何创建允许变量和函数调用的视图。**参数"2013"不做任何事情。如果没有一个,我就无法让该功能工作,所以添加了一些东西。
declare @newstring varchar(6)
set @newstring = [dbo].[GetPrevYearMonth]('2013')
select * from dbo.SAE_EDATA_LV
where [GTR-POSTING-DATE] like @newstring+'%'
我知道我可以创建一个具有表返回类型的函数,但这对于列数来说非常乏味。
任何帮助将不胜感激。
将视图更改为内联表值函数 (iTVF)。 无论如何,iTVF实际上只是一个参数化的视图。
您使用它的方式完全相同,只是您还必须指定参数。
或者,您可以为视图创建 iTVF 包装器:
CREATE FUNCTION dbo.fnSAE_EDATA_LV(@newstring varchar(6))
RETURNS TABLE As
select *
from dbo.SAE_EDATA_LV
where [GTR-POSTING-DATE] like @newstring+'%'
还应知道,只需将长列列表从 SSMS 资源管理器窗格中的表/视图/表值函数的图标/列文件夹拖放到 SQL 会话窗格中即可。