如何使用变量where子句创建SQL视图
我有一个37列的表格。该表由每日csv文件填充。我需要创建一个只过滤上月数据集的视图。过账日期列是一个字符串变量,格式为20131219。我有一个函数,它使用日期函数来确定当前月份,然后返回一个包含前一年和前一个月的字符串。这个查询返回我需要的数据集,但我不知道如何创建一个允许变量和函数调用的视图**paramater'2013'没有任何作用。我无法让函数在没有一个的情况下工作,所以添加了一些东西如何使用变量where子句创建SQL视图,sql,sql-server,function,view,Sql,Sql Server,Function,View,我有一个37列的表格。该表由每日csv文件填充。我需要创建一个只过滤上月数据集的视图。过账日期列是一个字符串变量,格式为20131219。我有一个函数,它使用日期函数来确定当前月份,然后返回一个包含前一年和前一个月的字符串。这个查询返回我需要的数据集,但我不知道如何创建一个允许变量和函数调用的视图**paramater'2013'没有任何作用。我无法让函数在没有一个的情况下工作,所以添加了一些东西 declare @newstring varchar(6) set @newstring = [d
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会话窗格中。我添加了SQL Server标记,因为这似乎是SQL Server语法。是否始终要返回上个月的数据,或者您希望能够返回任何日期范围的数据吗?