Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用变量where子句创建SQL视图_Sql_Sql Server_Function_View - Fatal编程技术网

如何使用变量where子句创建SQL视图

如何使用变量where子句创建SQL视图,sql,sql-server,function,view,Sql,Sql Server,Function,View,我有一个37列的表格。该表由每日csv文件填充。我需要创建一个只过滤上月数据集的视图。过账日期列是一个字符串变量,格式为20131219。我有一个函数,它使用日期函数来确定当前月份,然后返回一个包含前一年和前一个月的字符串。这个查询返回我需要的数据集,但我不知道如何创建一个允许变量和函数调用的视图**paramater'2013'没有任何作用。我无法让函数在没有一个的情况下工作,所以添加了一些东西 declare @newstring varchar(6) set @newstring = [d

我有一个37列的表格。该表由每日csv文件填充。我需要创建一个只过滤上月数据集的视图。过账日期列是一个字符串变量,格式为20131219。我有一个函数,它使用日期函数来确定当前月份,然后返回一个包含前一年和前一个月的字符串。这个查询返回我需要的数据集,但我不知道如何创建一个允许变量和函数调用的视图**paramater'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会话窗格中。

我添加了SQL Server标记,因为这似乎是SQL Server语法。是否始终要返回上个月的数据,或者您希望能够返回任何日期范围的数据吗?