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

时间:2014-01-13 20:15:12

标签: sql sql-server function view

我有一个包含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+'%'

我知道我可以使用表返回类型创建一个函数,但这对于列数来说非常繁琐。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

将视图更改为内联表值函数(iTVF)。无论如何,iTVF实际上只是一个参数化的视图。

除了你还必须指定参数外,你使用它完全相同。

或者,您可以为View创建一个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会话窗格中。