我有一个包含 37 列的表。该表由每日 csv 文件填充。我需要创建一个仅过滤上个月数据集的 View 。发布日期列是一个格式为 20131219 的字符串变量。我有一个函数,它使用日期函数来确定当前月份,然后返回包含之前年份和月份的字符串。该查询返回我需要的数据集,但我不知道如何创建允许变量和函数调用的 View 。 **参数“2013”不执行任何操作。如果没有它,我就无法使该功能正常工作,因此添加了一些东西。
declare @newstring varchar(6)
set @newstring = [dbo].[GetPrevYearMonth]('2013')
select * from dbo.SAE_EDATA_LV
where [GTR-POSTING-DATE] like @newstring+'%'
我知道我可以创建一个具有表返回类型的函数,但这对于列数来说非常乏味。
任何帮助将不胜感激。
最佳答案
将 View 更改为内联表值函数 (iTVF)。无论如何,iTVF 实际上只是一个参数化 View 。
您使用它的方式完全相同,只是您还必须指定参数。
或者,您可以为您的 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 资源管理器 Pane 上的表/ View /表值函数的图标/列文件夹中拖放到 SQL session Pane 中。
关于sql - 如何使用变量 where 子句创建 SQL View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100507/